16 位索引之后的数据使用行程编码 (RLE) 格式进行压缩。C28x 使用一种可通过以下算法解压缩的简单行程编码:
- 读取第一个16 位并将其分配为定界符 (D)。
- 读取下一个 16 位 (B)。
- 如果 B != D,则将 B 复制到输出缓冲区并转到步骤 2。
- 读取下一个 16 位 (L)。
- 如果 L > 0 且 L < 4,则将 D 复制到输出缓冲区 L 次。转到步骤 2。
- 如果 L = 4,则读取下一个16 位 (B')。将 B' 复制到输出缓冲区 L 次。转到步骤 2。
- 如果 L == 0,则读取接下来的 16 位 (L):
- 如果 L == 0,则已到达数据末尾,因此转到步骤 10。
- 如果 L 是 32 位行程的最高有效 16 位,则将其保存为 L.hi 并读取接下来的 16 位,即 32 位行程 L.lo 的最低有效 16 位。将 L.hi 与 L.lo 连接起来形成 32 位行程 L。
- 读取下一个16 位,重复字符 (C)。
- 复制到输出缓冲区 L 次。转到步骤 2。
- 处理结束。
TI 工具链中的 RLE 处理程序函数称为 _ _TI_decompress_rle。