<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: LZO compression/decompression in memory in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890312#M11348</link>
    <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/408636"&gt;sergey_kh&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;P&gt;Hi! Please, detalize - what do you mean with "in memory"? All compression/decompression ops for all IPP DC domain methods are done in memory. Need clarification.&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;I need a simple example how to compress/decompress a buffer in memory. &lt;BR /&gt;LZO example uses fread/fwrite bytewise. Fread/fwrite uses internal pointer&lt;BR /&gt;advanced further and ready for the next operation. I do not see how to &lt;BR /&gt;make and efficient equivalent of fread/fwrite operation for memory buffer.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 04 Dec 2008 19:18:08 GMT</pubDate>
    <dc:creator>constantine-vassilev</dc:creator>
    <dc:date>2008-12-04T19:18:08Z</dc:date>
    <item>
      <title>LZO compression/decompression in memory</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890310#M11346</link>
      <description>&lt;P&gt;Is it possible to LZO compress/decompress in memory?&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 03 Dec 2008 21:57:21 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890310#M11346</guid>
      <dc:creator>constantine-vassilev</dc:creator>
      <dc:date>2008-12-03T21:57:21Z</dc:date>
    </item>
    <item>
      <title>Re: LZO compression/decompression in memory</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890311#M11347</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/408384"&gt;thstart&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;P&gt;Is it possible to LZO compress/decompress in memory?&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;Hi! Please, detalize - what do you mean with "in memory"? All compression/decompression ops for all IPP DC domain methods are done in memory. Need clarification.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Dec 2008 09:18:13 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890311#M11347</guid>
      <dc:creator>Sergey_K_Intel</dc:creator>
      <dc:date>2008-12-04T09:18:13Z</dc:date>
    </item>
    <item>
      <title>Re: LZO compression/decompression in memory</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890312#M11348</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/408636"&gt;sergey_kh&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;P&gt;Hi! Please, detalize - what do you mean with "in memory"? All compression/decompression ops for all IPP DC domain methods are done in memory. Need clarification.&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;I need a simple example how to compress/decompress a buffer in memory. &lt;BR /&gt;LZO example uses fread/fwrite bytewise. Fread/fwrite uses internal pointer&lt;BR /&gt;advanced further and ready for the next operation. I do not see how to &lt;BR /&gt;make and efficient equivalent of fread/fwrite operation for memory buffer.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Dec 2008 19:18:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890312#M11348</guid>
      <dc:creator>constantine-vassilev</dc:creator>
      <dc:date>2008-12-04T19:18:08Z</dc:date>
    </item>
    <item>
      <title>Re: LZO compression/decompression in memory</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890313#M11349</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/408384"&gt;thstart&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;P&gt;I need a simple example how to compress/decompress a buffer in memory. &lt;BR /&gt;LZO example uses fread/fwrite bytewise. Fread/fwrite uses internal pointer&lt;BR /&gt;advanced further and ready for the next operation. I do not see how to &lt;BR /&gt;make and efficient equivalent of fread/fwrite operation for memory buffer.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;Hi, if I got you right, you want some kind of ZLIB's stream. Thus, to have a "compress" function which accumulates compressed data somewhere, until there is no place in internal buffer and, then, flushes its internal buffer to user program.&lt;/P&gt;
&lt;P&gt;If I wanted a function like this, I would do (note: very roughly, not tested, not even compiled ))) :&lt;/P&gt;
&lt;P&gt;
&lt;PRE&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;SPAN style="font-size: x-small;"&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; Ipp8u* output_buffer&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;[&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;SOME_HUGE_VALUE&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;]&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; Ipp8u* outPtr=output_buffer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; Ipp32u outAvail = SOME_HUGE_VALUE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;int&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; &lt;STRONG&gt;compress&lt;/STRONG&gt;(&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;const&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; Ipp8u* inDataPtr, Ipp32u inCount, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;             Ipp8u** outDataPtr, Ipp32u* outCount)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;    Ipp32u outBytes;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;    &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; (inCount &amp;gt; outAvail) &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;{&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #008000;"&gt;&lt;EM&gt;// Output data may not fit into outbuf&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        *outDataPtr = output_buffer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        *outCount = SOME_HUGE_VALUE - outAvail;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        outAvail = SOME_HUGE_VALUE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        outPtr = output_buffer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; TAKE_COMPRESSED_DATA;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;    &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;else&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        outBytes = outAvail;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        &lt;STRONG&gt;ippsEncodeLZO_8u&lt;/STRONG&gt;(inDataPtr, inCount, &amp;amp;outPtr, &amp;amp;outBytes);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        outAvail -= outBytes;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; GIVE_MORE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;    &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;int&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; &lt;STRONG&gt;main&lt;/STRONG&gt;()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;    &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;while&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;((inCount=&lt;STRONG&gt;thereIsAnyInputData&lt;/STRONG&gt;(upperSource, myInputBuffer)) &amp;gt; &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000080;"&gt;0&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        Ipp8u* localOutputPtr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        Ipp32u localOutputCount;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; (&lt;STRONG&gt;compress&lt;/STRONG&gt;(myInputBuffer, inCount, &amp;amp;localOutputPtr, &amp;amp;localOutputCount)&lt;BR /&gt;                                                            ==TAKE_COMPRESSED_DATA)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;            &lt;STRONG&gt;doSomethingWithData&lt;/STRONG&gt;(localOutputPtr, localOutputCount);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;        &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;else&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;            &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #c04000;"&gt;&lt;STRONG&gt;printf&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #008080;"&gt;"Compress function is asking more!n"&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;    &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;P.S. unlike ZLIB functions, LZO is oriented toward block compressing. Input block-&amp;gt;lzo-&amp;gt;output block.&lt;BR /&gt;&lt;BR /&gt;But there is one problem. In LZO functions all input pointers are constant. This means that input pointers are not moved&lt;BR /&gt;by the functions. So, if you have read compressed buffer consisting of several compressed block, there are no means &lt;BR /&gt;to separate one compressed block from the others. This is why in LZO-oriented packers there are specific markers &lt;BR /&gt;to separate compressed blocks. For example, first may come the length of next compressed block. &lt;BR /&gt;I.e. | data_length | data.... | data_length | data... | ... and so on.&lt;BR /&gt;Having these markers you can send to decoding function exactly required number of bytes.&lt;BR /&gt;Does it help? &lt;BR /&gt;Regards,&lt;BR /&gt;Sergey&lt;/PRE&gt;
&lt;/P&gt;</description>
      <pubDate>Fri, 05 Dec 2008 09:41:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890313#M11349</guid>
      <dc:creator>Sergey_K_Intel</dc:creator>
      <dc:date>2008-12-05T09:41:38Z</dc:date>
    </item>
    <item>
      <title>Re: LZO compression/decompression in memory</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890314#M11350</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/408636"&gt;sergey_kh&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;P&gt;Hi, if I got you right, you want some kind of ZLIB's stream. Thus, to have a "compress" function which accumulates compressed data somewhere, until there is no place in internal buffer and, then, flushes its internal buffer to user program.&lt;/P&gt;
&lt;P&gt;If I wanted a function like this, I would do (note: very roughly, not tested, not even compiled ))) :&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;SPAN style="font-size: x-small;"&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; Ipp8u* output_buffer&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;[&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;SOME_HUGE_VALUE&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;]&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; Ipp8u* outPtr=output_buffer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;static&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; Ipp32u outAvail = SOME_HUGE_VALUE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;int&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; &lt;STRONG&gt;compress&lt;/STRONG&gt;(&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;const&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; Ipp8u* inDataPtr, Ipp32u inCount, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;Ipp8u** outDataPtr, Ipp32u* outCount)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;Ipp32u outBytes;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; (inCount &amp;gt; outAvail) &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;{&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #008000;"&gt;&lt;EM&gt;// Output data may not fit into outbuf&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;*outDataPtr = output_buffer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;*outCount = SOME_HUGE_VALUE - outAvail;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;outAvail = SOME_HUGE_VALUE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;outPtr = output_buffer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; TAKE_COMPRESSED_DATA;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;else&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;outBytes = outAvail;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;&lt;STRONG&gt;ippsEncodeLZO_8u&lt;/STRONG&gt;(inDataPtr, inCount, &amp;amp;outPtr, &amp;amp;outBytes);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;outAvail -= outBytes;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;return&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; GIVE_MORE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;int&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; &lt;STRONG&gt;main&lt;/STRONG&gt;()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;while&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;((inCount=&lt;STRONG&gt;thereIsAnyInputData&lt;/STRONG&gt;(upperSource, myInputBuffer)) &amp;gt; &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000080;"&gt;0&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;Ipp8u* localOutputPtr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;Ipp32u localOutputCount;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt; (&lt;STRONG&gt;compress&lt;/STRONG&gt;(myInputBuffer, inCount, &amp;amp;localOutputPtr, &amp;amp;localOutputCount)&lt;BR /&gt;==TAKE_COMPRESSED_DATA)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;&lt;STRONG&gt;doSomethingWithData&lt;/STRONG&gt;(localOutputPtr, localOutputCount);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800080;"&gt;&lt;STRONG&gt;else&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #c04000;"&gt;&lt;STRONG&gt;printf&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #008080;"&gt;"Compress function is asking more!n"&lt;/SPAN&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #000000;"&gt;);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="background: #ffffff none repeat scroll 0% 0%; color: #800000;"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;P.S. unlike ZLIB functions, LZO is oriented toward block compressing. Input block-&amp;gt;lzo-&amp;gt;output block.&lt;BR /&gt;&lt;BR /&gt;But there is one problem. In LZO functions all input pointers are constant. This means that input pointers are not moved&lt;BR /&gt;by the functions. So, if you have read compressed buffer consisting of several compressed block, there are no means &lt;BR /&gt;to separate one compressed block from the others. This is why in LZO-oriented packers there are specific markers &lt;BR /&gt;to separate compressed blocks. For example, first may come the length of next compressed block. &lt;BR /&gt;I.e. | data_length | data.... | data_length | data... | ... and so on.&lt;BR /&gt;Having these markers you can send to decoding function exactly required number of bytes.&lt;BR /&gt;Does it help? &lt;BR /&gt;Regards,&lt;BR /&gt;Sergey
&lt;PRE&gt;&lt;/PRE&gt;
&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;Yes, I need an in memory decompression and a working code.&lt;/P&gt;
&lt;P&gt;The documentation is a bit misleading. On page 13-90 from ippsman.pdf I read "compressed stream format. "&lt;/P&gt;
&lt;P&gt;
&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: large; color: #0860a9; font-family: NeoSansIntelMedium;"&gt;&lt;SPAN style="font-size: large; color: #0860a9; font-family: NeoSansIntelMedium;"&gt;&lt;SPAN style="font-size: large; color: #0860a9; font-family: NeoSansIntelMedium;"&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;LZO Compression Functions&lt;/P&gt;
&lt;SPAN style="font-size: xx-small; font-family: Verdana;"&gt;&lt;SPAN style="font-size: xx-small; font-family: Verdana;"&gt;
&lt;P align="left"&gt;This section describes Intel IPP data compression functions, that implement the LZO&lt;/P&gt;
&lt;P align="left"&gt;(Lempel-Ziv-Oberhumer) compressed stream format. This format and algorithm use 64KB&lt;/P&gt;
&lt;P align="left"&gt;compression dictionary and do not require additional memory for decompression. (See&lt;/P&gt;
&lt;P&gt;original code of the LZO library at &lt;A href="http://www.oberhumer.com.)" target="_blank"&gt;http://www.oberhumer.com.)&lt;/A&gt;&lt;/P&gt;
&lt;FONT face="Verdana" size="1"&gt;&lt;FONT face="Verdana" size="1"&gt;
&lt;P&gt;&lt;/P&gt;
&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face="Verdana" size="1"&gt;
&lt;P&gt;&lt;/P&gt;
&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
Constantine&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Dec 2008 17:35:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890314#M11350</guid>
      <dc:creator>constantine-vassilev</dc:creator>
      <dc:date>2008-12-05T17:35:07Z</dc:date>
    </item>
    <item>
      <title>Re: LZO compression/decompression in memory</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890315#M11351</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/408384"&gt;thstart&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;P&gt;Yes, I need an in memory decompression and a working code.&lt;/P&gt;
&lt;P&gt;The documentation is a bit misleading. On page 13-90 from ippsman.pdf I read "compressed stream format. "&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: large; color: #0860a9; font-family: NeoSansIntelMedium;"&gt;&lt;SPAN style="font-size: large; color: #0860a9; font-family: NeoSansIntelMedium;"&gt;&lt;SPAN style="font-size: large; color: #0860a9; font-family: NeoSansIntelMedium;"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: xx-small; font-family: Verdana;"&gt;&lt;SPAN style="font-size: xx-small; font-family: Verdana;"&gt;&lt;SPAN style="font-family: Verdana; font-size: xx-small;"&gt;&lt;SPAN style="font-family: Verdana; font-size: xx-small;"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="font-family: Verdana; font-size: xx-small;"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
Constantine
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;Yes. Sorry. The word "stream" will be removed or substituted with "data". Anyway, to convert block compression into stream-like compression is not very difficult.&lt;/P&gt;
&lt;P&gt;Regards,&lt;BR /&gt;Sergey&lt;/P&gt;</description>
      <pubDate>Mon, 08 Dec 2008 08:57:03 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890315#M11351</guid>
      <dc:creator>Sergey_K_Intel</dc:creator>
      <dc:date>2008-12-08T08:57:03Z</dc:date>
    </item>
    <item>
      <title>Re: LZO compression/decompression in memory</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890316#M11352</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/408636"&gt;sergey_kh&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;P&gt;Yes. Sorry. The word "stream" will be removed or substituted with "data". Anyway, to convert block compression into stream-like compression is not very difficult.&lt;/P&gt;
&lt;P&gt;Regards,&lt;BR /&gt;Sergey&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;Hot to do that?&lt;/P&gt;</description>
      <pubDate>Thu, 11 Dec 2008 01:31:49 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890316#M11352</guid>
      <dc:creator>constantine-vassilev</dc:creator>
      <dc:date>2008-12-11T01:31:49Z</dc:date>
    </item>
    <item>
      <title>Re: LZO compression/decompression in memory</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890317#M11353</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/408384"&gt;thstart&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;Hot to do that?&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;Oops! I cannot do this for you )). Simply imagine how your compression routine must look like. What must it take as input? Will there be any output from it? Or, it must look like a "black-box", compressing and writing out the compressed data. What is "stream" in your interpretation? Example of routine, which digests input data and from time to time produces some compressed output is above.&lt;/P&gt;
&lt;P&gt;Regards,&lt;BR /&gt;Sergey&lt;/P&gt;</description>
      <pubDate>Thu, 11 Dec 2008 11:19:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/LZO-compression-decompression-in-memory/m-p/890317#M11353</guid>
      <dc:creator>Sergey_K_Intel</dc:creator>
      <dc:date>2008-12-11T11:19:22Z</dc:date>
    </item>
  </channel>
</rss>

