3.1.1.3.2. 序列部分 (Sequences Section)
Sequences_Section_Header (序列部分头)
此头部由两个项目组成:
- Number_of_Sequences(序列数)
- Symbol_Compression_Modes(符号压缩模式)
Number_of_Sequences是可变大小字段,使用1到3个字节.如果第一个字节是"byte0":
- 如果 (byte0 == 0):没有序列
- 如果 (byte0 < 128):Number_of_Sequences = byte0,使用1字节
- 如果 (byte0 < 255):Number_of_Sequences = ((byte0 - 128) << 8) + byte1,使用2字节
- 如果 (byte0 == 255):Number_of_Sequences = byte1 + (byte2 << 8) + 0x7F00,使用3字节
Symbol_Compression_Modes是单个字节,定义每种符号类型的压缩模式:
| Bit Number | Field Name |
|---|---|
| 7-6 | Literal_Lengths_Mode |
| 5-4 | Offsets_Mode |
| 3-2 | Match_Lengths_Mode |
| 1-0 | Reserved |
Compression_Mode的枚举:
| Value | Compression_Mode |
|---|---|
| 0 | Predefined_Mode |
| 1 | RLE_Mode |
| 2 | FSE_Compressed_Mode |
| 3 | Repeat_Mode |
Predefined_Mode: 使用预定义的FSE分布表.
RLE_Mode: 表描述由单个字节组成,包含符号的值.此符号将用于所有序列.
FSE_Compressed_Mode: 标准FSE压缩.将存在分布表.
Repeat_Mode: 将再次使用在前一个Number_Of_Sequences > 0的Compressed_Block中使用的表,或者如果这是第一个块,则使用字典中的表.
序列代码 (Sequence Codes)
每个符号是其自己上下文中的代码,指定Baseline和Number_of_Bits.代码经FSE压缩,并与原始附加位在同一位流中交错.
字面量长度码范围从0到35,定义0到131071字节的长度.
匹配长度码范围从0到52,定义3到131074字节的长度.
偏移量码范围从0到N.解码器可以自由限制其支持的最大N值.建议至少支持22.