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

Huffman Decoding Details

ben-bartlett
Beginner
897 Views

I am using the IPP legacy libraries specifically, ippdc. The reason for this is the data that I am working with has been compressed by these functions. Specifically Huffman Compressed JPEG data.

I have utilized the legacy libraries in IPP 9.0 and this has worked fine. However I would like to also implement none IPP code where speed is not as relevant.

The problem is I can't find any documentation on the process. While in theory I understand the basis of Huffman encoding, I don't see how to decoded the binary arrays I have of compressed JPEG data. I understand I need the Huffman decoding tree, and can see that generated purely from the compressed data with ippsHuffLenCodeTableUnpack_8u and the to decode the array in its entirety, I have been using ippsDecodeHuffInitAlloc_8u and ippsDecodeHuff_8u.

Could you share any info with regards to more details on extracting the huffman table from the compressed data? The data does not start with the typical header data it seems, as this is stored elsewhere. (image size (width,height, uncompressed_size) and passed to the relevant functions. Is it Canonical encoding of the table or some other means?

 

Any info is greatly appreciated.

 

 

 

0 Kudos
4 Replies
Ruqiu_C_Intel
Moderator
538 Views

Hi Ben,

Thank you for posting.

For the removed functions, it's hard for us to find out the details information for 10 years ago product. Please refer to the IPP Doc: https://www.intel.com/content/www/us/en/docs/ipp/developer-guide-reference/2021-12/ipp-ref-removed-functions.html, or update your IPP product to newer version.


Regards,

Ruqiu


0 Kudos
ben-bartlett
Beginner
516 Views

Hi Ruqiu,

 

I appreciate the response. However, all relevant functions have been removed with the workaround listed as N/A. The closest I found was the information in https://community.intel.com/t5/Intel-Integrated-Performance/IPP-Huffman-encoding-decoding-functions-deprecated-substituation/m-p/1009148.

 

I have implemented the linked legacy 9.0 library successfully. All data I have, has been encoded through IPP huffman compression.


Is it possible to shed any light on the structure of the JPEG byte arrays for other manipulation? If there is any documentation available within what format the byte array takes? Any specific information would be greatly beneficial. Looking at the decompression section of https://en.wikipedia.org/wiki/Huffman_coding there are numerous ways the tree can be encoded for example.

 

0 Kudos
Ruqiu_C_Intel
Moderator
496 Views

Hi Ben,

 

We understand that you are expecting the support for the legacy product, but the very old product didn't fix bugs or any potential secure risks, that's the reason that we are not recommend users to continue use the legacy product.

What we can do now is recommend users refer to two these articles below:

https://www.intel.com/content/www/us/en/developer/articles/tool/intel-ipp-legacy-libraries.html

https://www.intel.com/content/www/us/en/developer/articles/code-sample/how-to-build-former-intel-ipp-samples-with-ipp-90-legacy-libraries.html

 

For JPEG relate, might Intel Media SDK work for you.

https://github.com/Intel-Media-SDK/MediaSDK

 

Regards,

Ruqiu

 

0 Kudos
Ruqiu_C_Intel
Moderator
408 Views

Thank you for reaching us. This issue is closing and we will no longer respond to this thread. If you require additional assistance from Intel, please start a new thread.


0 Kudos
Reply