财位摆放:博客聚合 - MSDK格式转化篇(四)从IMC1到NV12 : sokerspace.com

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 18:13:17

MSDK格式转化篇(四)从IMC1到NV12


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

MSDK格式转化篇(一)从YV12到NV12

MSDK格式转化篇(二)从YUY2到NV12

MSDK格式转化篇(三)从YVYU到NV12

文章讲述了将YV12,YUY2和YVYU转化为NV12格式,本篇博客将会讲述如何将IMC1转为NV12格式。


这个格式是非常有意思的格式,在讲解之前,让我们先看看这个格式如何,如图1所示。



                                                                               图1 IMC1格式


IMC1有几个特点:

1)UV的stride必须和Y的stride一致,图1已经很好的表示这种意思。

2)UV的高度和宽度必须是16的倍数,这个就决定了W1,H1是需要更具Y的H计算出来的。


NV12格式如图2所示:



                                                                               图2 NV12格式


程序伪代码实现IMC1转成NV12

1. 拷贝Y数据

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

2. 拷贝UV数据

while ( 有数据 )

{

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

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

++ NV12->U;

++ NV12->V;

++ IMC1->U;

++ IMC1->V;

++ index

}


【小结】

- IMC1类似于YV12格式,UV的高度必须是16的倍数。

- IMC1的仅仅标准支持16*16的宏块。


<< MeeGo 1.0 bluetooth工具体验我在google code上建了一个项目。 >>
URL:http://www.sokerspace.com/modules/planet/view.article.php/746
Trackback:http://www.sokerspace.com/modules/planet/trackback.php/746