4.7 RDP 6.1 Bulk Compression Example

 The following annotation shows how the data used in the examples in section 3.1.8.2.2.1 and 3.1.8.2.3.1 appears in binary encoded format after having been decompressed by the level-2 decompressor, but not yet by the level-1 decompressor.

 The first packet contains the following data.

 a b c d e f g h i j

 The encoded version of this packet is represented as follows.

 00000000 16 80 61 62 63 64 65 66 67 68 69 6a             ..abcdefghij
 16 -> RDP61_COMPRESSED_DATA::Level1ComprFlags
 0x16
 = 0x10 | 0x02 | 0x04
 = L1_INNER_COMPRESSION | L1_NO_COMPRESSION | L1_PACKET_AT_FRONT
 80 -> RDP61_COMPRESSED_DATA::Level2ComprFlags
 0x80
 = PACKET_FLUSHED
 61 62 63 64 65 66 67 68 69 6a -> RDP61_COMPRESSED_DATA::Literals

 The second packet contains the following data.

 [2 matches]
 [MatchHistoryOffset@3, MatchLength=9, MatchOutputOffset@5]
 [MatchHistoryOffset@0, MatchLength=4, MatchOutputOffset@14] 
 k l m n o u

 The encoded version of this packet is represented as follows.

 00000000 11 21 02 00 09 00 05 00 03 00 00 00 04 00 0e 00 . ..............
 00000010 00 00 00 00 6b 6c 6d 6e 6f 75                   ....klmnou
 11 -> RDP61_COMPRESSED_DATA::Level1ComprFlags
 0x11
 = 0x10 | 0x01
 = L1_INNER_COMPRESSION | L1_COMPRESSED
 21 -> RDP61_COMPRESSED_DATA::Level2ComprFlags
 0x21
 = PACKET_COMPRESSED | PACKET_COMPR_TYPE_64K
 02 00 -> RDP61_COMPRESSED_DATA::MatchCount = 2 matches
 09 00 -> RDP61_MATCH_DETAILS::MatchLength = 9 bytes
 05 00 -> RDP61_MATCH_DETAILS::MatchOutputOffset = 5
 03 00 00 00 -> RDP61_MATCH_DETAILS::MatchHistoryOffset = 3
 04 00 -> RDP61_MATCH_DETAILS::MatchLength = 4 bytes
 0e 00 -> RDP61_MATCH_DETAILS::MatchOutputOffset = 14
 00 00 00 00 -> RDP61_MATCH_DETAILS::MatchHistoryOffset = 0
 6b 6c 6d 6e 6f 75 -> RDP61_COMPRESSED_DATA::Literals