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

LZ77 mess

levicki
Valued Contributor I
394 Views

Hi,

I just checked out the evaluation version of IPP 5.2 IA32 for Windows and I am a bit disappointed with documentation for compression/decompression APIs, especially with LZ77 part.

Code samples in PDF are incomplete, poorly formated, existing code comments are written in rather poor English and above all the interface is terribly overcomplicated.

Keep in mind that I have also checked the data compression sample which includes IPP based zlib implementation and while it may be functional and fast the code is extremely hard to read especially for someone who is not too familiar with LZ77 inner working. Variable names are misleading -- for example dstLen which really doesn't contain length of compressed data after a call to compression function not to mention all those pairs, pointers, lengths and indices in triplicate for source and destination, one really quickly loses track of them.

Furthermore, ZLIB supports Z_RLE and Z_FILTERED compression strategies beside Z_FIXED and Z_HUFFMAN_ONLY which seem to be the only two currently implemented by IPP. Of course, this isn't mentioned in the IPP documentation.

However, what I really do not understand is why this API had to be so awkwardly low-level in the first place, and why there are no functional equivalents to deflate() and inflate() in the IPP?!? Most people just want to call deflate() or inflate() once and be done with it. The others who need more usually write their own compression engines.

Thank you for your attention.

0 Kudos
1 Reply
Vladimir_Dudnik
Employee
394 Views

Hi Igor,

thank you for your valuable feedback, it help us in improving data compression documentation for the next version of IPP.

Regards,
Vladimir

0 Kudos
Reply