provided by: 
In this article, I will explain how Intel® Software Development Tools, and specifically Intel® Integrated Performance Primitives (Intel® IPP) for advanced imaging, provide great opportunities to unleash the power of multi-core processors.
As an image application developer, when you deal with image display, editing, analysis and manipulation, you will be concerned about choosing the appropriate algorithms to get the best quality image compression and achieve fast speed for image transmission via network or storage. In any image software application that deals with photographic images, we notice that Joint Photographic Experts Group (JPEG) and JPEG2000 are the most commonly used image compression standards. JPEG is a discrete cosine transform (DCT) based lossy image compression method standardized by the International Standards Organization in August 1990. JPEG encoding and decoding is commonly used in commercial applications for handling still images. JPEG2000 is one of the latest standards from the same organization that supports wavelet-based lossless and lossy image compression methods, and provides better quality for a similar compression ratio or higher compression ratio in comparison with traditional JPEG.
As image compression techniques become more complex, they will require more computational time or more network bandwidth from your hardware resource. One of your goals is to optimize your code to improve performance and achieve the best quality image compression.
With the recent dual-core and multi-core technology revolution advancements in microprocessor architecture, you can accelerate activities such as complex arithmetic, graphics, and synchronization of multiple threads. You can execute two or more software threads in an increasingly parallel manner, utilizing previously unused resources.
In the specific process of JPEG or JPEG2000 image compression, you can efficiently manage two or more threads to deal with Huffman/arithmetic coding, DCT/Wavelet transform, (de)Quantization and Entropy coding in parallel operations. To fully utilize these features in your code, some code modifications are required to integrate threading techniques. Intel® Software Development Products, including Intel® C++ Compiler, Intel® Thread Profiler, Intel® Thread Checker, VTune™ Analyzer and Intel® Performance Libraries can ease this transition. These tools will not only simplify threading in your image application, but will also help you to maximize the performance on dual-core and multi-core systems.
More specifically, for image applications that use JPEG or JPEG2000 image compression standards, the Intel® Integrated Performance Primitives (Intel® IPP) performance library provides JPEG/JPEG2000 coding and image processing functionality with threading optimizations that can be used to take advantage of these new target systems. The Intel IPP performance libraries contain thousands of low-level functions covering video/audio coding, image compression/processing, computer vision, speech coding/recognition, data compression, cryptography, signal processing and more. These functions are designed to maximize application performance on Intel® processor-based platforms through advanced algorithm implementations and low-level optimizations that exploit processor instruction sets and micro architectures. Also, to ease adoption of Intel IPP function calls in your application, Intel IPP also offers extensive free sample code to demonstrate function usage in each supported domain. The Intel IPP based JPEG Viewer and JPEG2000 samples also implement the threading mechanisms in the pipelines of image compressions.
With the latest Intel IPP software, the implementation of threading optimizations for image compression on dual-core systems yields a 70