图像处理算法大全(基于libyuv或IPP)----YV12转NV12

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xjb2006/article/details/80826366

《周星星教你学ffmpeg》技巧

ipp源码:

static void YV12ToNV12(BYTE* pYV12, BYTE* pNV12_Y,BYTE* pNV12_UV, int width,int height)//yuv420 //3/2:1+1/4+1/4----YU12
{
DWORD dwTime=::GetTickCount();
IppiSize imgSize;
imgSize.width=width;
imgSize.height=height;
const Ipp8u* pSource[3]={pYV12,pYV12+height*width*5/4,pYV12+height*width};
Ipp8u* pDesY=pNV12_Y;
Ipp8u* pDesUV=pNV12_UV;
int SourceStep[3]={width,width*1/2,width*1/2};//YUV420->1,1/4,1/4
int dstYStep=width;
int dstCbCrStep=width;
 
IppStatus is =ippiYCrCb420ToYCbCr420_8u_P3P2R(pSource,SourceStep,pDesY,dstYStep,pDesUV,dstCbCrStep,imgSize);
if(is != ippStsNoErr)
{
return;
//convert error
}
//TRACE("YV12ToNV12所需时间:%dms\n",::GetTickCount()-dwTime);

}


调用源码:YV12ToNV12(pYV12, pNV12_Y,pNV12_UV, 1280,720);//将YV12转成NV12,适用于硬件编码

有问题联系作者QQ:35744025

猜你喜欢

转载自blog.csdn.net/xjb2006/article/details/80826366