What's the Difference of the "ippiDCT8x8Inv_16s_C1" and "ippiDCT8x8Inv_AANTransposed_16s_C1R" ?
And when I use ippiDCT8x8Inv_16s_C1, the output is out of the range of [-256,255].
So what's the range of input and output of ippiDCT8x8Inv_16s_C1, because the IPP result is different with general MPEG2 IDCT. (General MPEG2 IDCT, intput is 12 bits, and output is 9 bits.) And the ippiDCT8x8Inv_AANTransposed_16s_C1R is different too.
ippiDCT8x8Inv_16s_C1 is a good IEEE compliant function. It should be used in most places. The function doesnt saturate output values. The user is responsible to provide correct input data. Actually, randomly generated array of 64 shorts is not valid input for this function.
We used the function for our MPEG2 decoder and it passes all conformances.
The second function is implemented so called fast iDCT algorithm proposed by Arai, Agui, Nakajima in 1988. It provides higher speed of calculation, but lower precision. In some cases it can be used for performance purposes. For example, it can be used when non-reference frame is decoded.