I have created a DLL based on the IPP for encoding and decoding JPEG files. I'm not using the UIC JPEG enc/dec but rather the JPEG end/dec itself (located in the "\ipp-samples\image-codecs\uic\src\codec\image\jpeg"samples folder). For my needs the simple enc/dec is enough - no need to use the whole UIC framework.
In most cases everything is working ready well but a coupe of day ago I had the following situation:
I try to decode a JPEG with 411 sampling to a YUV 422 buffer and to resulting buffer was empty despite the decoder's functionCJPEGDecoder::ReadData() returning OK.
After some debugging I found that theCJPEGDecoder::ColorConvert method was not converting anything. There is only one conversion forYCbCr to YCbCr but for 422 sampling.
Basically the same goes for the encoder - no color conversion between 411 source to 422 jpeg.
please note that in IJL and later in IPP JPEG implementation sampling name 411 actually mean what most people would call as 420 sampling. Namely, in IPP JPEG 411 sampling does mean that MCU will contain four 8x8 data units (blocks) and Cb/Cr will be presented with only one 8x8 block each. What is literally 420 sampling. IPP keep 411 name by historic reason only.