Using IPP for jpeg compression/decompression in a high-performance server
I'm working on some optimizations in a high-performance server that does jpeg compression and decompression. Currently the server use libjpeg. In order to use IPP, I can use libjpeg.ipp (with some patches, ref: http://trac.osgeo.org/gdal/ticket/2606). I am however a little concerned about potential exploits that may surface in the libjpeg code. As far as I can see, Intel is not updating libjpeg.ipp when new versions of libjpeg is released?.
Another (and maybe better) approach is to use the UIC (Unified Image Codecs) library. This is also "sample code".I am wondering if the code is maintained by Intel, so that exploits that might surface will be fixed and new versions made available.
And finally, is there something I have missed? The server is simply compressing and decompressing ipeg images in memory. Is there an easier way to accomplish this task, using the performance offered by IPP?
we do support IPP libjpeg sample, although we did not update for libjpeg7. The reason is simple, update takes time and introduce incompatibility with libjpeg6b, so we kind of watching on what adoption the new version of libjpeg library will have before breaking compatbility with libjpeg6b version. We consider libjpeg as an important part of imaging ecosystem, IJG teamdid an excellent work on it,but we also realized that in order to obtain the maximum of jpeg performance we have to rearchitecture the codec. That is why we developed Intel Unified Image Codec API. The UIC framework is also supported and developed. For example, in IPP 6.1 we added PNG support to UIC (thisdone through libpng library which was boosted with ipp_zlib library) and consider possibility to add new codecs in the next version of IPP.
Note, UIC JPEG is threaded, so you may get an additional performance benefits running it on multi core system.