将YUV420P图像水平镜像翻转——音视频(一)

YUV格式

 

Y:明亮度  UV:色彩及饱和度

YUV420即4个Y对应一组UV

YUV420P的存储

YUV 420P 和 YUV 420SP 都是基于 Planar 平面格式 进行存储的,先存储所有的 Y 分量后, YUV420P 类型就会先存储所有的 U 分量或者 V 分量,而 YUV420SP 则是按照 UV 或者 VU 的交替顺序进行存储

 

 YUV420P 的格式:

其在码流中的表现形式为:

旋转YUV420P的图像

复制代码
 1 void yuvMirror(unsigned char* yuv, int w, int h)
 2 {
 3     int i;
 4     int a, b;
 5 
 6     for (i = 0; i < h; i++)
 7     {
 8         a = i * w;
 9         b = (i + 1) * w - 1;
10         while (a < b)
11         {
12             _swap(yuv[a], yuv[b]);
13             a++; b--;
14         }
15     }
16 
17     int uStartPos = w * h; 
18     for (i = 0; i < h / 2; i++)
19     {
20         a = i * w / 2;
21         b = (i + 1) * w / 2 - 1;
22         while (a < b)
23         {
24             _swap(yuv[a+ uStartPos], yuv[b+ uStartPos]);
25             a++; b--;
26         }
27     }
28 
29     int vStartPos = w * h / 4 * 5;
30     for (i = 0; i < h / 2; i++)
31     {
32         a = i * w / 2;
33         b = (i + 1) * w / 2 - 1;
34         while (a < b)
35         {
36             _swap(yuv[a+ vStartPos], yuv[b+ vStartPos]);
37             a++; b--;
38         }
39     }
40 
41 }
复制代码
1 void _swap(unsigned char& a, unsigned char& b)
2 {
3   a ^= b;
4   b ^= a;
5   a ^= b;
6 }

效果:

 

 参考链接:

音视频编解码: YUV存储格式中的YUV420P,YUV420SP,NV12, NV21理解(转) 

yuv图片旋转180度,镜像水平翻转

posted @   仓隽  阅读(618)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示