2.3.2.1 Uncompressed Block
Following the generic block header, an uncompressed block begins with 1 to 16 bits of zero padding to align the bit buffer on a 16-bit boundary. At this point, the bitstream ends and a byte stream begins. Following the zero padding, new 32-bit values for R0, R1, and R2 are output in little-endian form, followed by the uncompressed data bytes themselves. Finally, if the uncompressed data length is odd, one extra byte of zero padding is encoded to realign the following bitstream.
Field |
Comments |
Size |
---|---|---|
Padding to align following field on 16-bit boundary |
Bits have a value of zero |
Variable, [1..16] bits |
Then, the following fields are encoded directly in the byte stream, not in the bitstream of byte-swapped 16-bit words:
Field |
Comments |
Size |
---|---|---|
R0 |
Least significant to most significant byte (little-endian DWORD ([MS-DTYP])) |
4 bytes |
R1 |
Least significant to most significant byte (little-endian DWORD) |
4 bytes |
R2 |
Least significant to most significant byte (little-endian DWORD) |
4 bytes |
Uncompressed raw data bytes |
Can use the direct memcpy function, as specified in [IEEE1003.1] |
[2^24 - 1] bytes |
Padding to realign bitstream |
Only if uncompressed size is odd |
0 or 1 byte |
Then the bitstream of byte-swapped 16-bit integers resumes for the next Block Type field (if there are subsequent blocks).
The decoded R0, R1, and R2 values are used as initial repeated offset values to decode the subsequent compressed block if present.