Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
7 Views

IPP 6.0 Inverse DCT 8x8 Negative Values Issue

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:

ippiDCT8x8Inv_AANTransposed_16s8u_C1R

Initial sample values are stored as:

Ipp16s samples[6][64]; // 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.

For example:

block[0] = -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.

0 Kudos
3 Replies
Highlighted
7 Views

Hello,
Please take a look at function description in documentation. It also might be useful to see how this function work in IPP MPEG2 decoder (audio-video-codecs sample).
Regards,
Vladimir

0 Kudos
Highlighted
Beginner
7 Views

Quoting - vdudnik
Hello,
Please take a look at function description in documentation. It also might be useful to see how this function work in IPP MPEG2 decoder (audio-video-codecs sample).
Regards,
Vladimir

I have read the IPPI manual (.PDF); but the sample code is extremely difficult to understand. What perplexes me is that this function works correctly for positive values...

0 Kudos
Highlighted
Beginner
7 Views

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":

ippiDCT8x8InvLSClip_16s8u_C1R

This one does everything I need and the results are correct as well.

0 Kudos