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

IJL vs IJG

ikozhurin
Beginner
566 Views
Hi,
We were using ijl20 from IPP 5.2 for jpeg encoding of screen images(for remote control software).
Now we are moving to IPP 6.1.4.052 and I see IJL library is in the "legacy" code samples.
What are the options for us for jpeg encoding inIPP 6.1.4.052? IJG, UIC? (I understand that we can continue to use IJL20, but we are looking for the best performance options)
We are compressing images in BGR color space.
Thanks,
Ian
0 Kudos
9 Replies
Vladimir_Dudnik
Employee
566 Views
Hi Ian,

I would definetely recommend you to migrate to UIC image codecs. For UIC JPEG and JPEG2000 we provide threaded implementation of both encoders and decoders. We also work on implementation of JPEG-XR codec in UIC and you will be able to evaluate it in upcoming IPP 7.0 beta release.

Regards,
Vladimir
0 Kudos
Naveen_G_Intel
Employee
566 Views

Hi Ian,
To get more information on using UIC, refer to"UIC training material"

http://software.intel.com/en-us/articles/intel-ipp-uic/


Regards,
Naveen Gv

0 Kudos
ikozhurin
Beginner
566 Views
Hi Vladimir,
I tried UIC JPEG codec byembeddingit in our application, that compiles with VS 2003. It wasn't any improvement over IJL performance and also it gives a lot of "deprecatedfunction" warnings(level 4) on IPP's functions.
Will it be fixed in upcoming releases?
Thanks,
Ian
0 Kudos
Vladimir_Dudnik
Employee
566 Views
Hi Ian,

the reason of warining on deprecated IPP functions is that we have introduced new ippiResizeSqrPixel function in IPP and this intended to substitute our old ippiResize function. The warnings are to inform our customers ahead for the possible changes which they need to adopt. And in UIC we still use old function we will fix that in IPP 7.0 version.

For the performance reason you may want to try to link with prebuilt UIC libraries which we made available as a separate download. The difference is that we prebuilt UIC with Intel Compiler and enable OpenMP threading in JPEG and JPEG2000 which is not available in old IJL library.

Regards,
Vladimir
0 Kudos
ikozhurin
Beginner
566 Views
Vladimir,
We are using static version of IPP libraries throughipp_px.h. Is there a way to do it with precompiled UIC? We need to link it inside the project which exposes number of IPP bitmaps functions compiles IJL API and IPP_zlib API, and links with static merged IPP libs.
Thanks,
Ian
0 Kudos
Vladimir_Dudnik
Employee
566 Views
Not sure I get your question. The prebuilt UIC DLLs are linked with static IPP libraries, so you do not need ipp_px.h file for them.

By the way, if you use ipp_px.h file that mean you only use generic IPP libraries and do not benefit from SSE instruction set of modern processors.

Vladimir
0 Kudos
levicki
Valued Contributor I
566 Views
Vladimir,

He asked if it was possible to link statically against UIC (i.e. not against DLL import library).
0 Kudos
ikozhurin
Beginner
566 Views
I'm sorry, I didn't make it clear. We are using static IPP libraries for generic processor type because size of our distribution should be small enough. So, my "real question" should be if it linked against static or dynamic libraries. As for ipp_px.h - we probably going to make custom selection of processors types + generic type for others. If you can recommend what types are most common/make sense to include, - it will be great!
Also we have some problem with moving to IPP_zlib. Sometime it fails(mem. access violation) on memcpy inside of deflate(). The code which using it didn't change, and it worked OK with zlib for a long time.We compileIPP_zlib in VS2003.
Thanks,
Ian
0 Kudos
Vladimir_Dudnik
Employee
566 Views
Hi Ian,

I would recommend you to create separate thread for issues you met with IPP zlib to not mix those two discussions. We actually put significant effort in improving performance and quality of IPP zlib and bzip2 high-level libraries. Please check if you use the latest (IPP 6.1 update 5) version of IPP data compression libraries.

Regarding your UIC question:
by default UIC is linked with IPP static libraries and libiomp5 dynamic library. I can't suggest on what cpu you need to support in your software, this is completely your decision, which you most probably will made based on target customer needs and their expected system configuration.

I would also recommend you to compile IPP samples with Intel compiler (although it is not mandatory) in case you are interested in performance (and you probably do, otherwise why do you come to performance libraries product, isn't it?)

Regards,
Vladimir
0 Kudos
Reply