2.2.2.5.1 RDP 6.0 Bitmap Compressed Bitmap Stream (RDP6_BITMAP_STREAM)

The RDP6_BITMAP_STREAM structure contains a stream of bitmap data compressed using RDP 6.0 Bitmap Compression techniques (section 3.1.9). Depending on the compression techniques employed, the bitmap data is represented using the AYCoCg or ARGB color space (section 3.1.9.1.2).

Compressed bitmap data is sent encapsulated in a Bitmap Update ([MS-RDPBCGR] section 2.2.9.1.1.3.1.2), Fast-Path Bitmap Update ([MS-RDPBCGR] section 2.2.9.1.2.1.2 ), Cache Bitmap - Revision 1 (section 2.2.2.2.1.2.2) Secondary Drawing Orders, or Cache Bitmap - Revision 2 (section 2.2.2.2.1.2.3) Secondary Drawing Orders. In all of these cases, the data is encapsulated inside a Bitmap Data structure ([MS-RDPBCGR] section 2.2.9.1.1.3.1.2.2).


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

FormatHeader

AlphaPlane (variable)

...

LumaOrRedPlane (variable)

...

OrangeChromaOrGreenPlane (variable)

...

GreenChromaOrBluePlane (variable)

...

Pad (optional)

FormatHeader (1 byte): An 8-bit, unsigned integer. This field contains a 1-byte, bit-packed update header as follows.

The format of the update header byte is described by the following bitmask diagram.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

CLL

A

B

C

Reserved

CLL (3 bits): A 3-bit, unsigned integer field that indicates the Color Loss Level (section 3.1.9.1.4). If CLL is set to 0, the color space used is ARGB. Otherwise, CLL MUST be in the range 1 to 7 (inclusive), and the color space used is AYCoCg.

A - CS (1 bit): A 1-bit field that indicates whether chroma subsampling is being used (section 3.1.9.1.3). If CS is equal to 1, chroma subsampling is being used, and the CLL field MUST be greater than 0, as chroma subsampling applies only to the AYCoCg color space.

B - RLE (1 bit): A 1-bit field. If RLE is equal to 1, RDP 6.0 RLE is used to compress the color planes (section 3.1.9.2). If not, RLE is equal to 0, and the color plane is sent uncompressed.

C - NA (1 bit): A 1-bit field. Indicates if an alpha plane is present. If NA is equal to 1, there is no alpha plane. The values of the alpha plane are then assumed to be 0xFF (fully opaque), and the bitmap data contains only three color planes. If NA is equal to 0, the alpha plane is sent as the first color plane.

Reserved (2 bits): A 2-bit, unsigned integer field. Reserved for future use.

AlphaPlane (variable): A variable-length field that contains the alpha plane. If the RLE subfield in the FormatHeader indicates that all of the color planes are RLE compressed (section 3.1.9.2), this field contains an RDP 6.0 RLE Segments (section 2.2.2.5.1.1) structure. Otherwise, it contains the raw bytes of the color plane.

LumaOrRedPlane (variable): A variable-length field that contains the luma plane (AYCoCg color space) or the red plane (ARGB color space). If the CLL subfield of the FormatHeader is greater than 0, the AYCoCg color space MUST be used. Otherwise, the ARGB color space MUST be used.

If the RLE subfield in the FormatHeader indicates that all of the color planes are RLE compressed (section 3.1.9.2), this field contains an RDP 6.0 RLE Segments (section 2.2.2.5.1.1) structure. Otherwise, it contains the raw bytes of the color plane.

OrangeChromaOrGreenPlane (variable): A variable-length field that contains the orange chroma plane (AYCoCg color space) or the green plane (ARGB color space). If the CLL subfield of the FormatHeader is greater than 0, the AYCoCg color space MUST be used. Otherwise, the ARGB color space MUST be used.

If the RLE subfield in the FormatHeader indicates that all of the color planes are RLE compressed (section 3.1.9.2), this field contains an RDP 6.0 RLE Segments (section 2.2.2.5.1.1) structure. Otherwise, it contains the raw bytes of the color plane.

Depending on the values of the CLL and CS subfields of the FormatHeader (in the case of the AYCoCg color space), the orange chroma plane could have been transformed by color loss reduction (section 3.1.9.1.4) and chroma subsampling (section 3.1.9.1.3).

GreenChromaOrBluePlane (variable): A variable-length field that contains the green chroma plane (AYCoCg color space) or the blue plane (ARGB color space). If the CLL subfield of the FormatHeader is greater than 0, the AYCoCg color space MUST be used. Otherwise, the ARGB color space MUST be used.

If the RLE subfield in the FormatHeader indicates that all of the color planes are RLE compressed (section 3.1.9.2), this field contains an RDP 6.0 RLE Segments (section 2.2.2.5.1.1) structure. Otherwise, it contains the raw bytes of the color plane.

Depending on the values of the CLL and CS subfields of the FormatHeader (in the case of the AYCoCg color space), the green chroma plane could have been transformed by color loss reduction (section 3.1.9.1.4) and chroma subsampling (section 3.1.9.1.3).

Pad (1 byte): An 8-bit, unsigned integer containing padding values that MUST be ignored. This optional field is only present if the RLE subfield of the FormatHeader field is zero.