yuv420转rgb24 不用ffmpeg libswscale解决方法

弄了好久都没解决,试了很多方法,终于在http://libav-users.943685.n4.nabble.com/yuv420-to-rgb24-NOT-using-libswscale-td1434694.html看到了解决方法,

void yuv2rgb(AVPicture *src, PixelFormat src_pix_fmt, AVPicture *dst, 
PixelFormat dst_pix_fmt, int width, int height) 

        unsigned char y, u,v; 
        char *rgb = dst->data[0]; 

        unsigned char  *yptr = src->data[0]; 
        unsigned char  *uptr = src->data[1]; 
        unsigned char  *vptr = src->data[2]; 

        int i =0; 

        for (int py=0; py < height; py++) 
        { 
                for (int px =0; px < width; px++, i+= 3) 
                { 
                        y = yptr[py*src->linesize[0]+px]; 
                        u = uptr[py/2*src->linesize[1]+px/2]; 
                        v = vptr[py/2*src->linesize[2]+px/2]; 
                        
                        rgb[ i ] = y + 1.402* (v-128); 
                        rgb[ i + 1 ] = y - 0.34414* (u-128) - 0.71414 *(v-128); 
                        rgb[ i + 2] = y + 1.772 *(u-128); 
                } 
        } 

如果相关问题的同仁可以联系我,共同研究!

 

posted @ 2013-10-31 17:03  artwebs  阅读(257)  评论(0编辑  收藏  举报