YUY2 to RGB-32

mac2024-05-10  34

MEDIASUBTYPE_YUY2        YUY2格式,以4:2:2方式打包

MEDIASUBTYPE_RGB32      每个像素用32位表示,RGB分量各使用8位(剩下的8位不用)

#include<Windows.h>

void TransformImage_YUY2(     BYTE*       pDest,     LONG        lDestStride,     const BYTE* pSrc,     LONG        lSrcStride,     DWORD       dwWidthInPixels,     DWORD       dwHeightInPixels     ) {     for (DWORD y = 0; y < dwHeightInPixels; y++)     {         RGBQUAD *pDestPel = (RGBQUAD*)pDest;         WORD    *pSrcPel = (WORD*)pSrc;

        for (DWORD x = 0; x < dwWidthInPixels; x += 2)         {             // Byte order is U0 Y0 V0 Y1

            int y0 = (int)LOBYTE(pSrcPel[x]);             int u0 = (int)HIBYTE(pSrcPel[x]);             int y1 = (int)LOBYTE(pSrcPel[x + 1]);             int v0 = (int)HIBYTE(pSrcPel[x + 1]);

            pDestPel[x] = ConvertYCrCbToRGB(y0, v0, u0);             pDestPel[x + 1] = ConvertYCrCbToRGB(y1, v0, u0);         }

        pSrc += lSrcStride;         pDest += lDestStride;     }

}

使用

TransformImage_YUY2(                 (BYTE*)m_frame,                 m_width * 4,                 ppbBuffer,                 m_width*2,                 m_width,                 m_height                 );

 

理解yuv和rgb的名字含义布局格式:

***妈的怎么能写的这么好强烈推荐:https://www.jianshu.com/p/6a361e86ccd5

                                                       https://www.jianshu.com/p/6a361e86ccd5

最新回复(0)