使用:
https://www.cnblogs.com/programmer-wfq/p/7049821.html
void Rgb2NV12(const unsigned char I[],
const int image_width,
const int image_height,
unsigned char J[])
{
//memcpy(J, I, image_width*image_height*3);
IppStatus ipp\_status;
int srcStep = image\_width\*;
int dstYStep = image\_width;
int dstCbCrStep = image\_width;
IppiSize roiSize = {image\_width, image\_height};
const Ipp8u\* pSrc = (Ipp8u\*)I;
Ipp8u \*pDstY = (Ipp8u\*)J; //Y color plane is the first image\_width\*image\_height pixels of J.
Ipp8u \*pDstCbCr = (Ipp8u\*)&J\[image\_width\*image\_height\]; //In NV12 format, UV plane starts below Y.
ipp\_status = ippiRGBToYCbCr420\_8u\_C3P2R(pSrc, srcStep, pDstY, dstYStep, pDstCbCr, dstCbCrStep, roiSize);
if (ipp\_status != ippStsNoErr)
{
memset(J, , image\_width\*image\_height\*/);
}
}
IPPAPI(IppStatus, ippiRGBToYCbCr420_8u_C3P2R,( const Ipp8u* pRGB, int rgbStep, Ipp8u* pY, int YStep,Ipp8u* pCbCr, int CbCrStep, IppiSize roiSize ))// RGB24-->NV12
IPPAPI(IppStatus, ippiRGBToYCbCr420_8u_C4P2R,( const Ipp8u* pRGB, int rgbStep, Ipp8u* pY, int YStep,Ipp8u* pCbCr, int CbCrStep, IppiSize roiSize ))// ARGB-->NV12
IPPAPI(IppStatus, ippiBGRToYCbCr420_8u_C3P2R,( const Ipp8u* pRGB, int rgbStep, Ipp8u* pY, int YStep,Ipp8u* pCbCr, int CbCrStep, IppiSize roiSize ))// BGR24-->NV12
IPPAPI(IppStatus, ippiBGRToYCbCr420_8u_AC4P2R,( const Ipp8u* pRGB, int rgbStep, Ipp8u* pY, int YStep,Ipp8u* pCbCr, int CbCrStep, IppiSize roiSize ))// ABGR-->NV12
IppiSize roiSize;
roiSize.width = m_mfxEncParams.mfx.FrameInfo.CropW;
roiSize.height = m_mfxEncParams.mfx.FrameInfo.CropH;
mfxU16 pitch = m_pVPPSurfacesVPPOutEnc[nEncSurfIdx].Data.Pitch;
ippiBGRToYCbCr420_8u_AC4P2R( (Ipp8u*)pInputBuffer, roiSize.width*, (Ipp8u*)m_pVPPSurfacesVPPOutEnc[nEncSurfIdx].Data.Y, pitch, (Ipp8u*)m_pVPPSurfacesVPPOutEnc[nEncSurfIdx].Data.UV,pitch, roiSize);
BGR2I420
IppiSize roiSize = { w, h };
ippiBGRToYCbCr420\_8u\_C3P3R(src.data,\*w,
yuv.data,yuv.stride, roiSize);
手机扫一扫
移动阅读更方便
你可能感兴趣的文章