Subject: [rohc] Query about SigComp Decompression.

From: Sreenath S <[email-masked]>
Date: Tue, 5 Dec 2006 10:10:33 +0530 (IST)

Hi All,

I have a doubt about zlib decompression.
I am using DEFLATE as the compression algorithm and have custom build zlib
DEFLATE compressor.

Do we need to strip off 2-byte zlib header and 4-byte adler32 from
compressed data, before we give the compressed  data to UDVM. Then after
succesfull decompression, decompressor can check for adler32.

Or the logic to strip off 2-byte zlib header and checking of adler32 reside
inside the DEFLATE bytecode. 

Best Regards,
   Sreenath

__________________________________________________________
Yahoo! India Answers: Share what you know. Learn something new
http://in.answers.yahoo.com/

_______________________________________________
Rohc mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rohc

---

From: cco <[email-masked]>
Date: Tue, 5 Dec 2006 12:29:10 +0100

> inside the DEFLATE bytecode. 

cristian: the important question here is: "which DEFLATE bytecode?".

however since this protocol is meant for compression the rule of thumb
would be: strip-off anything you do not really need or use.
the only information that would be really helpful in your case is:

CINFO (Compression info)
         For CM = 8, CINFO is the base-2 logarithm of the LZ77 window
         size, minus eight (CINFO=7 indicates a 32K window size). Values
         of CINFO above 7 are not allowed in this version of the
         specification.  CINFO is not defined in this specification for
         CM not equal to 8.
(from "ZLIB Compressed Data Format Specification version 3.3")
however you can encode this on as few as 3 bits. 
(is a value between 0 and 7)

all the other is either not needed or can be impl. differently for 
sigcomp (for example dictionary is handled at protocol level, using 
states; and dictionary is mandatory for sip anyway)

whether you include CRC or not is again up to you; it is not mandated by 
any of the sigcomp rfc/drafts. if you include it you must check it in the 
bytecode.
(be careful there is no ADLER32() in the udvm instruction set; if you 
chose adler32 you will need to implement it somehow using existant udvm
instructions... )

now, if you want to "eat" some extra byte(s) from the input packet in your
decompresor just use the INPUT-BYTES() instruction and copy them one by
one at an address in the udvm vm you do not really use for some other
computation.

bye now!
cristian