- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all,
I'm new to using the IPP library and I'm having trouble converting from pixel order YCbCr411 data to BGR format. From reading the documentation, I know that I first need to convert the pixel order to planar format first before calling the the library function ippiYCbCr411ToBGR_8u_P3C4R to convert planar YCbCr411 data to BGR format. I see that I can probably use the ippiCopy_8u_C3P3R call to convert my image buffer from pixel order to planar order.
For example, is this the following the correct approach?
int pDstStep[3]; Ipp8u* pFirst = ippiMalloc_8u_C1(srcCols, srcRows, &pDstStep[0]); Ipp8u* pSecond = ippiMalloc_8u_C1(srcCols/4, srcRows, &pDstStep[1]); Ipp8u* pThird = ippiMalloc_8u_C1(srcCols/4, srcRows, &pDstStep[2]); Ipp8u* pDst[3] = { pFirst, pSecond, pThird }; ippiCopy_8u_C3P3R((Ipp8u*)pImageBuffer, pImageBufferStride, pDst, srcCols, imgSize); // Convert from 3 plane YCbCr411 source image to BGR ippiYCbCr411ToBGR_8u_P3C4R(const unsigned char**)(&pDst), pDstStep, pDestBuffer, destStride, imgSize, 0);
Thanks!
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
This way looks fine. One note here is the ippiYCbCr411ToBGR_8u_P3C4R includes one additional alpha channel for BGR data. If it does has the alpha channel, it can use C3 format data.
Thanks,
Chao
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Thanks for your comments! I do require two methods for the conversion one to support alpha channel and one without so that's why in the above example i was converting to C4 format.
However my output image is not correct. I can see repeats on the image which leads me to think perhaps I am not setting the parameters correctly when converting from pixel to planar format using the ippiCopy function. I'm not sure if the step size (forth parameter) is correct. I've set the step size as width of the source image ... is this still correct when the input image buffer is in the YCbCr 4:1:1 format?
ippiCopy_8u_C3P3R(Ipp8u*)pImageBuffer,pImageBufferStride,pDst,srcCols,imgSize);
Thanks for your help!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
For the YCrCr 4:1:1 pixel format, could you provide the details on how the data is stored?
For the Y data is stored in plan: Y0, Y1, Y2...., the chrominance samples are interleaved: Cb0, Cr0, Cb1, Cr1....Actually, you can check this function:
https://software.intel.com/en-us/node/504046
Thanks,
Chao
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
My pixel order data is stored in the format Y0, Y1, Y2, Y3, Cb0, Cr0, Y4, Y5, Y6, Y7, Cb1, Cr1 ... etc. Are there any existing functions to convert this into planar format?
Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Unfortunately, there is no functions to convert from your format to YCbCr411 format.
Sergey.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page