Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

ipp7.0 supports NV12 to RGB converstion?

fremontca
Beginner
906 Views

Does ipp7.0 have NV12toRGB converstion?

0 Kudos
6 Replies
Ying_H_Intel
Employee
906 Views
Hello Fremontca,

Seems no exact one if U,V areinterleaved. But it may depends on the storageand the conversion formula. Intel IPP contains color conversion functions list in IPP manaul. You may search them and find the one or two, combine some foryou needed,
like
ippiYUV420ToRGB_8u_P3
ippiYCbCr420ToRGB_8u_P2C3R
ippiYCbCr420ToBGR_709CSC
ippiYCbCr420ToBGR_709HDTV
ippiYCbCr411ToYCbCr420_8u_P3P2R

Regards,
Ying H.
0 Kudos
Ying_H_Intel
Employee
906 Views

As workaround, I guess two ipp function combination may complete it

NV12 to BGR

If NV12 are stored in 2 Plane: Y plan and UV interlaced,
IppStatus ippiYCbCr420ToRGB_8u_P2C3R(const Ipp8u* pSrcY, int srcYStep, const Ipp8u* pSrcCbCr, int srcCbCrStep, Ipp8u* pDst, int dstStep, IppiSize roiSize);

Then change the RGB to BGR byswap channel

IppStatus ippiSwapChannels_(const Ipp* pSrc, int srcStep, Ipp* pDst, int dstStep, IppiSize roiSize, const int dstOrder[3]);

BGR to NV12

IppStatus ippiBGRToYCbCr420_8u_C3P3R(const Ipp8u* pSrc, int srcStep, Ipp8u* pDst[3], int dstStep[3], IppiSize roiSize);

Then

IppStatus ippiYCbCr420_8u_P3P2R(const Ipp8u* pSrc[3], int srcStep[3], Ipp8u* pDstY, int dstYStep, Ipp8u* pDstCbCr, int dstCbCrStep, IppiSize roiSize);

Regards,
Ying

0 Kudos
nchannon
Beginner
906 Views
Hi Ying,
Thanks for your time and support I found where I was going wrong it was infact OpenCV2 where my problem was I was doing the following:

cv::Mat RGB32DST(pmfxOutSurface->Info.Height, pmfxOutSurface->Info.Width,CV_8UC3,(Ipp8u *)RGB32Dst);
were I should of had:
cv::Mat RGB24DST(pmfxOutSurface->Info.Height, pmfxOutSurface->Info.Width,CV_8UC4,(Ipp8u *)RGB24Dst);

now I can keep to IPP and without implementing OPENCV to do the same job IPP is doing. ippiSwapChannel(..) works fine now as well.

Always something stilly and stupid that causes errors

One other question regarding IPP 7 dose it implement the second and third generation i7 CPU hardware decoding or should I use the intel media SDK for the decoding as im new to the intel api's

Regards
Nigel

0 Kudos
Ying_H_Intel
Employee
906 Views
Hi Nigel,

Sorry for the delay. No , IPP 7 don't include hardware decoding. Intel media SDk may help.
You may post your quesiton to http://software.intel.com/en-us/forums/showthread.php?t=107071&o=a&s=lr.

Thanks
Ying
0 Kudos
Ying_H_Intel
Employee
906 Views

Dear All, 

Just update  if the feature is still interesting? Please feel free to reply in the threads.

Thanks

Ying 

0 Kudos
Ying_H_Intel
Employee
906 Views

Just add some comments:

Available in ippCC
ippiYCbCr420ToBGR_8u_P2C3R   NV12 -> BGR
ippiYCbCr420ToBGR_8u_P2C4R   NV12 -> BGRX

there is no in ippCC
BGR -> NV12
BGRX-> NV12

There is in ippCC (YV12<>NV12 )
ippiYCbCr420ToYCrCb420_8u_P2P3R NV12 -> YV12
ippiYCrCb420ToYCbCr420_8u_P3P2R YV12 -> NV12

Best Regards,

Ying

 

0 Kudos
Reply