zoukankan      html  css  js  c++  java
  • 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); 
                    } 
            } 

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

  • 相关阅读:
    IT程序猿”是怎样练成的? 之 提升内驱力的7大秘籍转
    wp7 退出程序的提示对话框
    生活不容易
    Decorator模式学习
    用序列化方法实现的Prototype的深拷贝
    Observer pettern
    Adapter模式学习
    bridge模式学习
    Composite模式学习
    Prototype原形设计模式
  • 原文地址:https://www.cnblogs.com/artwebs/p/yuv420_to_gb24.html
Copyright © 2011-2022 走看看