zoukankan      html  css  js  c++  java
  • yuy2_to_i420,yuyv_to_i420

    YV12 与 I420是有区别的。具体区别见上一篇。

    YV12 : 亮度(行×列) + U(行×列/4) + V(行×列/4)
    I420 : 亮度(行×列) + V(行×列/4) + U(行×列/4)

    如果用I420的解析器播放YV12格式的文件的话,会产生偏蓝的问题。 x264仅支持I420的压缩。

    YUY2 =  YUYV(命名太不规范).

    YUY2转换成I420的方法如下,测试通过。

    #define uint8_t BYTE
        void YUY2toI420(int inWidth, int inHeight, uint8_t *pSrc, uint8_t *pDest)
        {
            int i, j;
            uint8_t *u = pDest + (inWidth * inHeight);
            uint8_t *v = u + (inWidth * inHeight) / 4;

            for (i = 0; i < inHeight/2; i++)
            {

                uint8_t *src_l1 = pSrc + inWidth*2*2*i;
                uint8_t *src_l2 = src_l1 + inWidth*2;
                uint8_t *y_l1 = pDest + inWidth*2*i;
                uint8_t *y_l2 = y_l1 + inWidth;
                for (j = 0; j < inWidth/2; j++)
                {
                    // two pels in one go
                    *y_l1++ = src_l1[0];
                    *u++ = src_l1[1];
                    *y_l1++ = src_l1[2];
                    *v++ = src_l1[3];
                    *y_l2++ = src_l2[0];
                    *y_l2++ = src_l2[2];
                    src_l1 += 4;
                    src_l2 += 4;
                }
            }
        }
  • 相关阅读:
    思维导图 第八章 项目质量管理
    思维导图 第七章 项目成本管理
    redis安装与配置
    思维导图 第六章 项目进度管理
    思维导图 第五章 项目范围管理
    Linux下用户-组权限配置
    意灵魔法馆首页的初步设计
    try catch自定义异常类的使用
    使用freemarker时,生成的html出现乱码
    乱码问题
  • 原文地址:https://www.cnblogs.com/cplusplus/p/2453315.html
Copyright © 2011-2022 走看看