Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

IPP 6.0 Inverse DCT 8x8 Negative Values Issue

teshshah
Beginner
580 Views

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
Vladimir_Dudnik
Employee
580 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
teshshah
Beginner
580 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
teshshah
Beginner
580 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
Reply