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

IDCT of IPP is not giving desired values

rahul_b
Beginner
781 Views

Hello all,
For optimization of IJG standard JPEG encoder & decoder,I am replacing IDCT,VLC,dequantization etc. functions using corrosponding IPP library functions.
All functions are giving proper outputs except IDCT function.
Each & every value of output of IPP's IDCT function differs by 2-5 from IJG's IDCT function.
Hence,I am getting artifacts in output image.I have tried much,but unable to reach solution.
If anybody knows the solution,plz reply soon.
The detail information is as follows:
The IPP function I have used is:
ippiDCTQuantInv8x8LS_JPEG_16s8u_C1R
While the IJG's standard function 'jpeg_idct_islow' uses algorithm developed by 'C. Loeffler, A. Ligtenberg and G. Moschytz'.
I am using evaluation version 4.1 of IPP on windows2000.I am using VC++ version 6.0.
Thanking You in anticipation.
Regards,
Rahul

0 Kudos
8 Replies
Vladimir_Dudnik
Employee
781 Views
Hi,
Why did not you use our IJG-IPP example? It exists and works well, so you can download it from here and look what was missed in your code.
Regards,
Vladimir
0 Kudos
stephan-schaem7
Beginner
781 Views
I personaly dont like the IDCT quality found in the IPP, it create visible artifacts.
Your best call is to use AP-945 and to redo the colunm rouding math...
If anyone at Intel read this...
The IPP as it stand is not flexible, and the layer of paramater check and sub function call kill performance.
We found ~15% of our decoding time was spent in IPP function call overhead befor calling the real internal functions.
This is unaceptable for a performance library.
So we now use various function in source code format so we can tweak and fix the code.
Please provide more aplication notes with source code for the various functions found in the IPP.
Thanks,
Stephan
0 Kudos
Vladimir_Dudnik
Employee
781 Views
Hi Stephan,
we use code which is similar to AP-945 (which also was developed by IPP team). But let me understand what problem you face, so if it is real problem in IPP we can improve it in the future. Or might be the problem is in the way you are using IPP functions?
Could you please provide some 8x8 block of source data for IDCT and quantization table and reference result which you think we should get from IPP function call?
By the way, what do you mean under not-flexible?
Regards,
Vladimir
0 Kudos
sschaem1
Beginner
781 Views
AP-945 is not well suited for video decoding because the rounding error get concentrated on rows instead of being evenly distributed.
The flexibility with having the source code VS a library is with customizing the functions. For example we can build a pre shifted dct for free that can eliminate shuffle instruction in the IDCT... Or we can easely change the rouding precision, or merge 2 functions into one, etc...
For example, we had to rewritethe DV hufmman code found in the IPP to support DVCPRO. It would have been allot better for us simply to addapt the provided function.
Stephan
0 Kudos
Vladimir_Dudnik
Employee
781 Views
Hi,
just want to clarify, we are talking about ippiDCT8x8Inv_16s_C1R or ippiDCT8x8Inv_AANTransposed_16s_C1R functions?
Vladimir

Message Edited by vdudnik on 06-08-2005 02:39 AM

0 Kudos
sschaem1
Beginner
780 Views

ippiDCT8x8Inv_16s_C1I and AP-945

Stephan

0 Kudos
Vladimir_Dudnik
Employee
781 Views
Ok, I should notice that we successfully tested this function for conformance to IEEE1180 standard, for IDCT arithmetic accuracy for video decoding. Are you talking about even more accurate transform? If so, you can use ippiDCTFwd_32f_C1R function, right?
Regards,
Vladimir
0 Kudos
sschaem1
Beginner
781 Views
We are actually getting the result we are looking for using a modifyed version of the code provided in AP-945.
The issue is again in the column rounding method... it give better overall result , but the error are not evenly distributed causing visual problems.
Stephan
0 Kudos
Reply