读书人

求yuv422转成yuv420解决办法

发布时间: 2012-03-29 12:53:12 作者: rapoo

求yuv422转成yuv420
请高手指点,如和将yuv422 转成yuv420,或者rgb24

[解决办法]
// 参考ffmpeg:imageconvert.c
static void yuv422_to_yuv420p(AVPicture *dst, const AVPicture *src,
int width, int height)
{
const uint8_t *p, *p1;
uint8_t *lum, *cr, *cb, *lum1, *cr1, *cb1;
int w;

p1 = src-> data[0];
lum1 = dst-> data[0];
cb1 = dst-> data[1];
cr1 = dst-> data[2];

for(;height > = 1; height -= 2) {
p = p1;
lum = lum1;
cb = cb1;
cr = cr1;
for(w = width; w > = 2; w -= 2) {
lum[0] = p[0];
cb[0] = p[1];
lum[1] = p[2];
cr[0] = p[3];
p += 4;
lum += 2;
cb++;
cr++;
}
if (w) {
lum[0] = p[0];
cb[0] = p[1];
cr[0] = p[3];
cb++;
cr++;
}
p1 += src-> linesize[0];
lum1 += dst-> linesize[0];
if (height> 1) {
p = p1;
lum = lum1;
for(w = width; w > = 2; w -= 2) {
lum[0] = p[0];
lum[1] = p[2];
p += 4;
lum += 2;
}
if (w) {
lum[0] = p[0];
}
p1 += src-> linesize[0];
lum1 += dst-> linesize[0];
}
cb1 += dst-> linesize[1];
cr1 += dst-> linesize[2];
}
}

[解决办法]
xivd源代码中有你想要的东西,而且都用mmx和sse优化的。

读书人网 >图形图像

热点推荐