⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 umc_color_space_converter_nv12.cpp

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    // resize image to internal buffer    // resize Y//#if !defined (ARM) && !defined (_ARM_)    ippiResize_8u_C1R(  ConvertParam.lpSource0,                        SizeSrc,                        ConvertParam.PitchSource0,                        RectSrc,                        lpY,                        (vm_var32) lPitchY,                        SizeDst,                        static_cast<double> (RectDst.width) / static_cast<double> (RectSrc.width),                        static_cast<double> (RectDst.height) / static_cast<double> (RectSrc.height),                        ConvertParam.ConversionInit.lInterpolation);//#endif // !defined (ARM) && !defined (_ARM_)    // check additional free space    {        size_t lNeedSpace;        lNeedSpace = (SizeDst.height / 2) * (SizeSrc.width / 2) * 2;        if ((m_lAdditionalSize < lNeedSpace) &&            (false == AllocateInternalBuffer(lNeedSpace, m_lAdditionalSize, m_lpvAdditional)))            return;    }    // resize U & V    // step 1: change vertical size in additional buffer size    SizeSrc.height /= 2;    SizeDst.width = SizeSrc.width;    SizeDst.height /= 2;    RectSrc.height /= 2;    RectDst.width = RectSrc.width;    RectDst.height /= 2;//#if !defined (ARM) && !defined (_ARM_)    ippiResize_8u_C1R(  ConvertParam.lpSource1,                        SizeSrc,                        ConvertParam.PitchSource1,                        RectSrc,                        reinterpret_cast<vm_byte *> (m_lpvAdditional),                        SizeDst.width,                        SizeDst,                        1.0,                        static_cast<double> (RectDst.height) / static_cast<double> (RectSrc.height),                        ConvertParam.ConversionInit.lInterpolation);//#endif // !defined (ARM) && !defined (_ARM_)    // step 2: change horizontal size in internal buffer    SizeSrc.width /= 2;    SizeSrc.height = SizeDst.height;    SizeDst.width = ConvertParam.ConversionInit.SizeDest.width / 2;    resize_hor_UV_merged(   m_lpvAdditional,                            SizeSrc,                            SizeSrc.width * 2,                            lpUV,                            SizeDst,                            lPitchUV);    if (ConvertParam.ConversionInit.FormatDest != ConvertParam.ConversionInit.FormatSource)    {        // save new pointer(s)        ConvertParam.ConversionInit.SizeSource = ConvertParam.ConversionInit.SizeDest;        ConvertParam.lpSource0 = lpY;        ConvertParam.lpSource1 = lpUV;        ConvertParam.PitchSource0 = (vm_var32) lPitchY;        ConvertParam.PitchSource1 = (vm_var32) lPitchUV;    };} // void ColorSpaceConverter::ResizeNV12(ColorConversionParams &ConvertParam)void ColorSpaceConverter::ConvertFrom_NV12_To_YV12(ColorConversionParams &ConvertParam){    // different size. Do resize    if ((ConvertParam.ConversionInit.SizeSource.width != ConvertParam.ConversionInit.SizeDest.width) ||        (ConvertParam.ConversionInit.SizeSource.height != ConvertParam.ConversionInit.SizeDest.height))    {        // resize image to internal buffer        ResizeNV12(ConvertParam);    }    // equal size. simple convert    {        vm_byte *(lpDst[3]) = {ConvertParam.lpDest0, ConvertParam.lpDest1, ConvertParam.lpDest2};        int (iPitchDst[3]) = {ConvertParam.PitchDest0, ConvertParam.PitchDest1, ConvertParam.PitchDest2};//#if !defined (ARM) && !defined (_ARM_)#ifdef _OPENMP        int count = ConvertParam.ConversionInit.SizeDest.height/16;        IppiSize SizeDest = {ConvertParam.ConversionInit.SizeDest.width, 16};#pragma omp for        for(int i = 0; i < count; i++)        {            ippiYCbCr420_8u_P2P3R(ConvertParam.lpSource0,                                  ConvertParam.PitchSource0,                                  ConvertParam.lpSource1,                                  ConvertParam.PitchSource1,                                  lpDst,                                  iPitchDst,                                  SizeDest);            ConvertParam.lpSource0 += SizeDest.height*ConvertParam.PitchSource0;            ConvertParam.lpSource1 += SizeDest.height/2*ConvertParam.PitchSource1;            lpDst[0]+= SizeDest.height*iPitchDst[0];            lpDst[1]+= SizeDest.height/2*iPitchDst[1];            lpDst[2]+= SizeDest.height/2*iPitchDst[2];        }#else // !_OPENMP        IppiSize SizeDest = {ConvertParam.ConversionInit.SizeDest.width, ConvertParam.ConversionInit.SizeDest.height};        ippiYCbCr420_8u_P2P3R(ConvertParam.lpSource0,                              ConvertParam.PitchSource0,                              ConvertParam.lpSource1,                              ConvertParam.PitchSource1,                              lpDst,                              iPitchDst,                              SizeDest);#endif // _OPENMP//#endif // !defined (ARM) && !defined (_ARM_)    }} // void ColorSpaceConverter::ConvertFrom_NV12_To_YV12(ColorConversionParams &ConvertParam)void ColorSpaceConverter::ConvertFrom_NV12_To_NV12(ColorConversionParams &ConvertParam){    // different size. Do resize    if ((ConvertParam.ConversionInit.SizeSource.width != ConvertParam.ConversionInit.SizeDest.width) ||        (ConvertParam.ConversionInit.SizeSource.height != ConvertParam.ConversionInit.SizeDest.height))    {        // resize image to internal buffer        ResizeNV12(ConvertParam);    }    else    // equal size. simple copy    {        // convert Y        IppiSize SizeDest = {ConvertParam.ConversionInit.SizeDest.width, ConvertParam.ConversionInit.SizeDest.height};        ippiCopy_8u_C1R(ConvertParam.lpSource0,                        ConvertParam.PitchSource0,                        ConvertParam.lpDest0,                        ConvertParam.PitchDest0,                        SizeDest);        // convert U & V        (ConvertParam.ConversionInit.SizeDest).height /= 2;        SizeDest.width = ConvertParam.ConversionInit.SizeDest.width;        SizeDest.height = ConvertParam.ConversionInit.SizeDest.height;        ippiCopy_8u_C1R(ConvertParam.lpSource1,                        ConvertParam.PitchSource1,                        ConvertParam.lpDest1,                        ConvertParam.PitchDest1,                        SizeDest);    }} // void ColorSpaceConverter::ConvertFrom_NV12_To_NV12(ColorConversionParams &ConvertParam)void ColorSpaceConverter::ConvertFrom_NV12_To_CbYCr(ColorConversionParams &ConvertParam){    // different size. Do resize    if ((ConvertParam.ConversionInit.SizeSource.width != ConvertParam.ConversionInit.SizeDest.width) ||        (ConvertParam.ConversionInit.SizeSource.height != ConvertParam.ConversionInit.SizeDest.height))    {        // resize image to internal buffer        ResizeNV12(ConvertParam);    }//#if !defined (ARM) && !defined (_ARM_)    // equal size. simple convert    {        IppiSize roiSize = {ConvertParam.ConversionInit.SizeDest.width,                            ConvertParam.ConversionInit.SizeDest.height};        ippiYCbCr420ToCbYCr422_8u_P2C2R(ConvertParam.lpSource0,                                        ConvertParam.PitchSource0,                                        ConvertParam.lpSource1,                                        ConvertParam.PitchSource1,                                        ConvertParam.lpDest0,                                        ConvertParam.PitchDest0,                                        roiSize);    }//#endif // !defined (ARM) && !defined (_ARM_)} // void ColorSpaceConverter::ConvertFrom_NV12_To_CbYCr(ColorConversionParams &ConvertParam)void ColorSpaceConverter::ConvertFrom_NV12_To_YCbCr(ColorConversionParams &ConvertParam){    // different size. Do resize    if ((ConvertParam.ConversionInit.SizeSource.width != ConvertParam.ConversionInit.SizeDest.width) ||        (ConvertParam.ConversionInit.SizeSource.height != ConvertParam.ConversionInit.SizeDest.height))    {        // resize image to internal buffer        ResizeNV12(ConvertParam);    }//#if !defined (ARM) && !defined (_ARM_)    // equal size. simple convert    {        IppiSize SizeDest = {ConvertParam.ConversionInit.SizeDest.width, ConvertParam.ConversionInit.SizeDest.height};        ippiYCbCr420ToYCbCr422_8u_P2C2R(ConvertParam.lpSource0,                                        ConvertParam.PitchSource0,                                        ConvertParam.lpSource1,                                        ConvertParam.PitchSource1,                                        ConvertParam.lpDest0,                                        ConvertParam.PitchDest0,                                        SizeDest);    }//#endif} // void ColorSpaceConverter::ConvertFrom_NV12_To_YCbCr(ColorConversionParams &ConvertParam)void ColorSpaceConverter::ConvertFrom_NV12_To_YUV411(ColorConversionParams &/*ConvertParam*/){    vm_debug_msg(0, __VM_STRING("This function isn't realized."));} // void ColorSpaceConverter::ConvertFrom_NV12_To_YUV411(ColorConversionParams &ConvertParam)void ColorSpaceConverter::ConvertFrom_NV12_To_YUV420(ColorConversionParams &/*ConvertParam*/){    vm_debug_msg(0, __VM_STRING("This function isn't realized."));} // void ColorSpaceConverter::ConvertFrom_NV12_To_YUV420(ColorConversionParams &ConvertParam)void ColorSpaceConverter::ConvertFrom_NV12_To_YUV420M(ColorConversionParams &/*ConvertParam*/){    vm_debug_msg(0, __VM_STRING("This function isn't realized."));} // void ColorSpaceConverter::ConvertFrom_NV12_To_YUV420M(ColorConversionParams &ConvertParam)void ColorSpaceConverter::ConvertFrom_NV12_To_RGB32(ColorConversionParams &/*ConvertParam*/){    vm_debug_msg(0, __VM_STRING("This function isn't realized."));} // void ColorSpaceConverter::ConvertFrom_NV12_To_RGB32(ColorConversionParams &ConvertParam)void ColorSpaceConverter::ConvertFrom_NV12_To_RGB24(ColorConversionParams &/*ConvertParam*/){    vm_debug_msg(0, __VM_STRING("This function isn't realized."));} // void ColorSpaceConverter::ConvertFrom_NV12_To_RGB24(ColorConversionParams &ConvertParam)void ColorSpaceConverter::ConvertFrom_NV12_To_RGB565(ColorConversionParams &/*ConvertParam*/){    vm_debug_msg(0, __VM_STRING("This function isn't realized."));} // void ColorSpaceConverter::ConvertFrom_NV12_To_RGB565(ColorConversionParams &ConvertParam)void ColorSpaceConverter::ConvertFrom_NV12_To_RGB555(ColorConversionParams &/*ConvertParam*/){    vm_debug_msg(0, __VM_STRING("This function isn't realized."));} // void ColorSpaceConverter::ConvertFrom_NV12_To_RGB555(ColorConversionParams &ConvertParam)void ColorSpaceConverter::ConvertFrom_NV12_To_RGB444(ColorConversionParams &/*ConvertParam*/){    vm_debug_msg(0, __VM_STRING("This function isn't realized."));} // void ColorSpaceConverter::ConvertFrom_NV12_To_RGB444(ColorConversionParams &ConvertParam)} // end namespace UMC

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -