打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
博客聚合 - MSDK格式转化篇(一)从YV12到NV12 : sokerspace.com


作者: Yanqing Wang (Intel) |英特尔® 软件网络博客 - 中文
日期: 2010/7/26 15:25
点击: 30

Media SDK的decoder,vpp,encoder对输入输出格式有着严格的限制,现在仅仅支持NV12。那么如何从其他格式转化为NV12是日常工作中经常遇到的事情。本篇文章以此为目的,讨论如何将YV12格式转化为NV12格式。


YV12格式是常用的CODEC格式,它的格式如图1所示。



                                                    图1 YV12格式


图1中:

W表示图像的宽度,即Width的缩写。

H表示图像的高度,即Height的缩写

Stride表示图像行的跨度,超出Width部分为填充数据,主要目的是为了字节对齐,一般以16字节或者32字节对齐居多。


NV12是英特尔定义的视频格式,它在英特尔硬件平台上是原生态支持,它的格式如图2所示。



                                                    图2 NV12格式


从图1,图2可以看出,YV12和NV12基本上相似:

- Y有相同的格式

- U和V不同。YV12将VU分开存储,而NV12将其交叉存储。


程序伪代码实现YV12转成NV12

1. 拷贝Y数据

memcpy( NV12->Y, YV12->Y, Height * Stride );

2. 拷贝UV数据

while ( 有数据 )

{

NV12->U[ index ] = YV12->U[ index ];

NV12->V[ index ] = YV12->V[ index ];

++ NV12->U;

++ NV12->V;

++ YV12->U;

++ YV12->V;

++ index

}


【小结】

- YV12转成NV12是相对简单的工作,重点是要认识这两种格式对YUV数据如何存储。

- 伪代码仅仅是提供了一种思路,实际的使用中可以根据情况来决定是否需要开辟新的存储空间来存放NV12格式。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一文读懂rawRGB、RGB和YUV数据格式与转换
常用图像像素格式 NV12、NV2、I420、YV12、YUYV
图文详解YUV420数据格式
YUV格式详解
摄像头YUV图像常见数据格式介绍
Android Camera
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服