财位摆放:博客聚合 - 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