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.