首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

YUV数据怎么叠加

2012-03-05 
YUV数据如何叠加怎么能实现,将两帧不同大小的YUV数据合并一帧,使小分辨率的覆盖大分辨率的一部分?求热心人

YUV数据如何叠加
怎么能实现,将两帧不同大小的YUV数据合并一帧,使小分辨率的覆盖大分辨率的一部分?求热心人帮助,先谢过了。

[解决办法]
平面格式对Y,U,V分别叠加,打包格式直接叠加。
[解决办法]
直接copy就行
[解决办法]
分辨率width*height的YUV图片数据流格式Y + U + V
Y 数据的长度是 width*height
U 数据的长度 (width/2)*(height/2)
V 数据的长度 (width/2)*(height/2)
所以一祯图像数据流总长度是 width*height * 1.5

以此为依据分解两帧数据,然后对Y/U/V分别操作,

比如,两帧数据分别为
YUV0[]; // w640 x h480
YUV1[]; // w320 x h240

以pos{0,0}对准合并, 结果覆盖YUV0。

BYTE* buf0_y = YUV0[0];
BYTE* buf0_U = buf0_y + w640 * h480 ;
BYTE* buf0_V = buf0_U + w640 * h480/4;

BYTE* buf1_y = YUV1[0];
BYTE* buf1_U = buf1_y + w320 * h240 ;
BYTE* buf1_V = buf1_U + w320 * h240/4;

for ( int i = 0; i < h240; i ++)
{
memcpy(buf0_y,buf1_y,w320);
memcpy(buf0_u,buf1_u,w320/2); 
memcpy(buf0_v,buf1_v,w320/2); 
buf0_y += w640;
buf0_u += w640/2;
buf0_v += w640/2;
buf1_y += w320;
buf1_u += w320/2;
buf1_v += w320/2;
}

热点排行