We are developing an accelerated MPEG-2 based video decoder and are comparing the use of Intel IPP with other methods.
When using the following:
Initial sample values are stored as:
Ipp16s samples; // 4:2:0
The resulting values are arranged in X / Y flipped, and for negative DC values the function always returns all 0s.
Our own reference IDCT function returns very different values.
block = -848
Intel IPP IDCT yields: result = [0, 0, ....]
Our own IDCT yields: result = [-106, -106, ...]
I understand that 8u values are not to be negative, but what happens to these values? How do I correct this? I tried using the Intel IPP Inverse Quant function too..
So in summary, I'm stuck on:
IDCT sample placement (for values it works on),
IDCT handling of negative input values.
Well, I don't know if this issue is solved, but for now I stopped using that function.
I found a different undocumented direct function in "ippi.h":
This one does everything I need and the results are correct as well.