- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
I have the following Pixel Format 'UYVY'4:2:2 Compression interleaved. In the document it is described as the following
Four 8-bit Unsigned Components are packed into one 32-bit little-endian word.
Byte_3:Y'1 Byte_2:Cr0 Byte_1:Y'0 Byte_0:Cb0.
I want to convert this into YUV420 Planar or somethingI can use with mpeg2 compression.
What functions is there availablein IPP to achieve this as it is very confusing.
Jurie
1 Solution
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Do you have any problem to look at IPP documentation or header files?
I think something from the follwong should do what you are looking for:
Regards,
Vladimir
I think something from the follwong should do what you are looking for:
[cpp]/* //////////////////////////////////////////////////////////////////////////// // Name: ippiYUToYU422_8u_C2P2R, ippiUYToYU422_8u_C2P2R // Purpose: Converts 2-channel YUY2,UYVY images to the 2-plane NV12 image // // Return: // ippStsNoErr Ok // ippStsNullPtrErr One of the pointers is NULL // ippStsSizeErr roiSize has a field value less than 2 // // Parameters: // pDstY Pointer to the destination image Y plane. // dstYStep The step through the destination image Y plane. // pDstCbCr Pointer to the destination image CbCr plane. // dstCbCrStep The step through the destination image CbCr plane. // pSrc Pointer to the source image // srcStep Step through the source image // roiSize Size of the ROI, should be multiple of 2. // Notes: // for ippiYUToYU422_8u_C2P2R sequence of bytes in the source image is( YUY2 ): // Y0U0Y1V0,Y2U1Y3V1,... // for ippiUYToYU422_8u_C2P2R sequence of bytes in the destination image is( UYVY ): // U0Y0V0Y1,U1Y2V1Y3,... // Sequence of bytes in the destination image is( NV12 ): // Y plane Y0Y1Y2Y3 // UV plane U0V0U1V1 */ IPPAPI(IppStatus, ippiYCbCr422ToYCbCr420_8u_C2P2R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDstY, int dstYStep,Ipp8u* pDstCbCr,int dstCbCrStep, IppiSize roiSize )) IPPAPI(IppStatus, ippiCbYCr422ToYCbCr420_8u_C2P2R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDstY, int dstYStep,Ipp8u* pDstCbCr,int dstCbCrStep, IppiSize roiSize )) /* //////////////////////////////////////////////////////////////////////////// // Name: ippiYCbCr422ToYCrCb420_8u_C2P3R, ippiCbYCr422ToYCrCb420_8u_C2P3R // Purpose: Converts 2-channel YUY2,UYVY images to the 3-plane YV12 image // // Return: // ippStsNoErr Ok // ippStsNullPtrErr One of the pointers is NULL // ippStsSizeErr roiSize has a field value less than 2 // // Parameters: // pSrc Pointer to the source image // srcStep Step through the source image // roiSize Size of the ROI, should be multiple of 2. // pDst An array of pointers to separate destination color planes. // dstStep An array of step in bytes through the destination planes // Notes: // for ippiYUToYV422_8u_C2P3R sequence of bytes in the source image is( YUY2 ): // Y0U0Y1V0,Y2U1Y3V1,... // for ippiUYToYV422_8u_C2P3R sequence of bytes in the destination image is( UYVY ): // U0Y0V0Y1,U1Y2V1Y3,... // Sequence of planes in the destination image is( YV12 ): Y V U */ IPPAPI(IppStatus, ippiYCbCr422ToYCrCb420_8u_C2P3R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst[3],int dstStep[3], IppiSize roiSize )) IPPAPI(IppStatus, ippiCbYCr422ToYCrCb420_8u_C2P3R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst[3],int dstStep[3], IppiSize roiSize )) /* //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Name: ippiYCbCr422ToYCbCr420_8u_C2P3R // Purpose: Converts a 2-channel YUY2 image to the I420(IYUV) image // Name: ippiCbYCr422ToYCbCr420_8u_C2P3R // Purpose: Converts a 2-channel YUY2 image to the I420(IYUV) image // Name: ippiYCrCb422ToYCbCr420_8u_C2P3R // Purpose: Converts a 2-channel YVYU image to the I420(IYUV) image // Return: // ippStsNoErr Ok // ippStsNullPtrErr One or more pointers are NULL // ippStsSizeErr if roiSize.width < 2 || roiSize.height < 2 // // Arguments: // pSrc pointer to the source image // srcStep step for the source image // pDst array of pointers to the components of the destination image // dstStep array of steps values for every component // roiSize region of interest to be processed, in pixels // Notes: // roiSize.width and roiSize.height should be multiple 2. */ IPPAPI(IppStatus, ippiYCbCr422ToYCbCr420_8u_C2P3R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst[3], int dstStep[3], IppiSize roiSize )) IPPAPI(IppStatus, ippiCbYCr422ToYCbCr420_8u_C2P3R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst[3], int dstStep[3], IppiSize roiSize )) IPPAPI(IppStatus, ippiYCrCb422ToYCbCr420_8u_C2P3R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst[3], int dstStep[3], IppiSize roiSize )) [/cpp]
Regards,
Vladimir
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Do you have any problem to look at IPP documentation or header files?
I think something from the follwong should do what you are looking for:
Regards,
Vladimir
I think something from the follwong should do what you are looking for:
[cpp]/* //////////////////////////////////////////////////////////////////////////// // Name: ippiYUToYU422_8u_C2P2R, ippiUYToYU422_8u_C2P2R // Purpose: Converts 2-channel YUY2,UYVY images to the 2-plane NV12 image // // Return: // ippStsNoErr Ok // ippStsNullPtrErr One of the pointers is NULL // ippStsSizeErr roiSize has a field value less than 2 // // Parameters: // pDstY Pointer to the destination image Y plane. // dstYStep The step through the destination image Y plane. // pDstCbCr Pointer to the destination image CbCr plane. // dstCbCrStep The step through the destination image CbCr plane. // pSrc Pointer to the source image // srcStep Step through the source image // roiSize Size of the ROI, should be multiple of 2. // Notes: // for ippiYUToYU422_8u_C2P2R sequence of bytes in the source image is( YUY2 ): // Y0U0Y1V0,Y2U1Y3V1,... // for ippiUYToYU422_8u_C2P2R sequence of bytes in the destination image is( UYVY ): // U0Y0V0Y1,U1Y2V1Y3,... // Sequence of bytes in the destination image is( NV12 ): // Y plane Y0Y1Y2Y3 // UV plane U0V0U1V1 */ IPPAPI(IppStatus, ippiYCbCr422ToYCbCr420_8u_C2P2R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDstY, int dstYStep,Ipp8u* pDstCbCr,int dstCbCrStep, IppiSize roiSize )) IPPAPI(IppStatus, ippiCbYCr422ToYCbCr420_8u_C2P2R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDstY, int dstYStep,Ipp8u* pDstCbCr,int dstCbCrStep, IppiSize roiSize )) /* //////////////////////////////////////////////////////////////////////////// // Name: ippiYCbCr422ToYCrCb420_8u_C2P3R, ippiCbYCr422ToYCrCb420_8u_C2P3R // Purpose: Converts 2-channel YUY2,UYVY images to the 3-plane YV12 image // // Return: // ippStsNoErr Ok // ippStsNullPtrErr One of the pointers is NULL // ippStsSizeErr roiSize has a field value less than 2 // // Parameters: // pSrc Pointer to the source image // srcStep Step through the source image // roiSize Size of the ROI, should be multiple of 2. // pDst An array of pointers to separate destination color planes. // dstStep An array of step in bytes through the destination planes // Notes: // for ippiYUToYV422_8u_C2P3R sequence of bytes in the source image is( YUY2 ): // Y0U0Y1V0,Y2U1Y3V1,... // for ippiUYToYV422_8u_C2P3R sequence of bytes in the destination image is( UYVY ): // U0Y0V0Y1,U1Y2V1Y3,... // Sequence of planes in the destination image is( YV12 ): Y V U */ IPPAPI(IppStatus, ippiYCbCr422ToYCrCb420_8u_C2P3R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst[3],int dstStep[3], IppiSize roiSize )) IPPAPI(IppStatus, ippiCbYCr422ToYCrCb420_8u_C2P3R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst[3],int dstStep[3], IppiSize roiSize )) /* //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Name: ippiYCbCr422ToYCbCr420_8u_C2P3R // Purpose: Converts a 2-channel YUY2 image to the I420(IYUV) image // Name: ippiCbYCr422ToYCbCr420_8u_C2P3R // Purpose: Converts a 2-channel YUY2 image to the I420(IYUV) image // Name: ippiYCrCb422ToYCbCr420_8u_C2P3R // Purpose: Converts a 2-channel YVYU image to the I420(IYUV) image // Return: // ippStsNoErr Ok // ippStsNullPtrErr One or more pointers are NULL // ippStsSizeErr if roiSize.width < 2 || roiSize.height < 2 // // Arguments: // pSrc pointer to the source image // srcStep step for the source image // pDst array of pointers to the components of the destination image // dstStep array of steps values for every component // roiSize region of interest to be processed, in pixels // Notes: // roiSize.width and roiSize.height should be multiple 2. */ IPPAPI(IppStatus, ippiYCbCr422ToYCbCr420_8u_C2P3R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst[3], int dstStep[3], IppiSize roiSize )) IPPAPI(IppStatus, ippiCbYCr422ToYCbCr420_8u_C2P3R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst[3], int dstStep[3], IppiSize roiSize )) IPPAPI(IppStatus, ippiYCrCb422ToYCbCr420_8u_C2P3R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst[3], int dstStep[3], IppiSize roiSize )) [/cpp]
Regards,
Vladimir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
thanks did solve my problems.
No problem reading it understanding it was the problem but i am sorted now thanks.
jurie
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page