Problem using ippiDCTInv_8x8_16s_I() (IPP 3.0 Linux on PXA255 processor)

Problem using ippiDCTInv_8x8_16s_I() (IPP 3.0 Linux on PXA255 processor)

Hi,
I've met the problem using ippiDCTInv_8x8_16s_I()/ippiDCTInv_8x8_16s() : it returns incorrect result. My environment is IPP 3.0, Linux on PXA255 processor. The source code and results are below. I checked ippiDCTFwd_8x8_16s_I() works correctly (I compared results with my "C" FwdDCT()). What could be the problem?

short __attribute__ ((__aligned__ (32))) shBlock[64];
short __attribute__ ((__aligned__ (32))) shBlock_orig[64];

/* Prepare (fill) shBlock */
...
/* Save original shBlock */
for(i=0; i<64; i++)
shBlock_orig[i]= shBlock[i];
/* Forward DCT (in place) */
ret= ippiDCTFwd_8x8_16s_I( (Ipp16s *) shBlock);
if(ret != ippStsNoErr)
fatal_error(-1 , "IPP error: %d
", ret);
/* Inverse DCT (in place) */
ret= ippiDCTInv_8x8_16s_I( (Ipp16s *) shBlock);
if(ret != ippStsNoErr)
fatal_error(-1 , "IPP error: %d
", ret);

1 post / 0 new
For more complete information about compiler optimizations, see our Optimization Notice.