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

JPEG decoding performance



I have been testing various JPEG decoding techniques with IPP.

I have been using the UMC version with the UMC::MPEG4VideoDecoder().

I have also tested the CJPEGDecoder.

When jpeg.lib is compiled with Intel Compiler, I get good decoding performance and also multi threading capabilities when using a core 2 duo computer with the CJPEGDecoder.

JPEG decoding performance is about 50% better with CJPEGDecoder than with UMC::MPEG4VideoDecoder() on a core 2 dual computer!!

The jpeg.lib used with CJPEGDecoder is complied from Intel ipp-samples/ image-codecs/ jpegview using Intel compiler.

But the UMC version of the JPEG decoder seems not to be able utilize the multi thread capabilities when run on the same computer. The UMC jpeg.lib is compiled from Intel ipp-samples/audio-video-codecs using the same Intel compiler.

Why don't I get the same performance with both theese techniques?

Should I use one of them before the other?

The reason I want to use the UMC version (if possible) is that I will also be able to decode MPEG4 och H264 video streams. Naturally I want to get the best possible decoding performance for all types of video streams.

Thanks in advance

Best regards


0 Kudos
1 Reply

Hi Ulf,

We use OpenMP threading in IPP JPEG codec (note, it is mostly the same code in JPEGView and UMC, although sources in JPEGView are most up to date). To utilize OpenMP threading you need to compile sources with Intel compiler with /Qopenmp option or MSVC2005 compiler with -openmp option. When you compile with Intel Compiler you also need to link with libiomp5 library.

In IPP 5.3 UMC build system shouldenable OpenMP threading when you use Intel Compiler. If it is not, please submit issue report to Intel Premier Support.

Note, MPEG4 codec is also threaded with OpenMP, so it also should get advantage from using correct build procedure.


0 Kudos