5.5. Decoding Order Number (DON) (解码顺序号)
5.5. Decoding Order Number (DON) (解码顺序号)
在交错分包模式下, 允许 NAL 单元的传输顺序与其解码顺序不同。解码顺序号 (Decoding Order Number, DON) 是负载结构中的字段或派生变量, 指示 NAL 单元解码顺序。关于不按解码顺序传输及使用 DON 的用例理由与示例见第 13 节。
传输顺序与解码顺序的耦合由可选的 sprop-interleaving-depth 媒体类型参数控制如下。当该可选参数值为 0 (显式或默认) 时, NAL 单元的传输顺序必须 (MUST) 符合 NAL 单元解码顺序。当该值大于 0 时:
- MTAP16 与 MTAP24 中 NAL 单元的顺序不要求为 NAL 单元解码顺序, 且
- 对两个连续包解包 STAP-B, MTAP 与 FU 所产生的 NAL 单元顺序也不要求为 NAL 单元解码顺序。
单 NAL 单元包, STAP-A 与 FU-A 的 RTP 负载结构不包含 DON。STAP-B 与 FU-B 结构包含 DON, MTAP 的结构可按第 5.7.2 节派生 DON。
说明性注: 交错模式下若出现 FU-A, 其前总有设置 DON 的 FU-B。
说明性注: 若发送端希望每包封装单个 NAL 单元并按非解码顺序发包, 可使用 STAP-B 包类型。
在单 NAL 单元分包模式下, 由 RTP 序号确定的 NAL 单元传输顺序必须 (MUST) 与其 NAL 单元解码顺序相同。在非交错分包模式下, 单 NAL 单元包, STAP-A 与 FU-A 中 NAL 单元的传输顺序必须 (MUST) 与其解码顺序相同。STAP 内的 NAL 单元必须按 NAL 单元解码顺序出现。因此, 解码顺序首先由 STAP 内隐式顺序给出, 再由 RTP 序号给出 STAP, FU 与单 NAL 单元包之间的顺序。
对 STAP-B, MTAP 以及以 FU-B 起始的分片单元序列所承载 NAL 单元的 DON 值通告, 分别在第 5.7.1, 5.7.2 与 5.8 节规定。传输顺序中第一个 NAL 单元的 DON 值可以 (MAY) 设为任意值。DON 取值范围为 0 至 65535 (含)。达到最大值后 DON 回绕到 0。
包含于任意 STAP-B, MTAP 或以 FU-B 起始的分片序列中的两个 NAL 单元之解码顺序确定如下。设 DON(i) 为传输顺序中索引为 i 的 NAL 单元的解码顺序号。函数 don_diff(m,n) 规定如下:
若 DON(m) == DON(n), 则 don_diff(m,n) = 0
若 (DON(m) < DON(n) 且 DON(n) - DON(m) < 32768), 则 don_diff(m,n) = DON(n) - DON(m)
若 (DON(m) > DON(n) 且 DON(m) - DON(n) >= 32768), 则 don_diff(m,n) = 65536 - DON(m) + DON(n)
若 (DON(m) < DON(n) 且 DON(n) - DON(m) >= 32768), 则 don_diff(m,n) = - (DON(m) + 65536 - DON(n))
若 (DON(m) > DON(n) 且 DON(m) - DON(n) < 32768), 则 don_diff(m,n) = - (DON(m) - DON(n))
don_diff(m,n) 为正表示传输顺序索引为 n 的 NAL 单元在解码顺序上跟在索引为 m 的之后。don_diff(m,n) 为 0 时, 两 NAL 单元的解码顺序可任择其一。don_diff(m,n) 为负表示索引 n 的单元在解码顺序上先于索引 m 的单元。
与 DON 相关的字段 (DON, DONB, DOND; 见第 5.7 节) 的取值必须 (MUST) 使得按上述由 DON 确定的解码顺序符合 NAL 单元解码顺序。
若在 NAL 单元解码顺序中交换两个 NAL 单元的顺序且新顺序不符合解码顺序, 则二者绝对不能 (MUST NOT) 具有相同 DON。若交换 NAL 单元流中两个连续单元且新顺序仍符合解码顺序, 则可以 (MAY) 具有相同 DON。例如, 当所用视频编码配置文件允许任意片顺序时, 一帧图像的所有编码片 NAL 单元可以具有相同 DON。因此, 相同 DON 的 NAL 单元可按任意顺序解码, 不同 DON 的两个单元应按上文规定顺序送交解码器。当解码顺序中两个连续 NAL 单元具有不同 DON 时, 第二个的 DON 应该 (SHOULD) 为第一个的 DON 加一。
恢复 NAL 单元解码顺序的解包过程示例见第 7 节。
说明性注: 即使传输无错, 接收端也不应期望解码顺序中两个连续 NAL 单元的 DON 值之差的绝对值恒为一。不要求每次加一, 因为在为 NAL 单元关联 DON 时可能尚不知是否全部送达接收端。例如, 网关在网络比特率不足时可能不转发非参考图像的编码片或 SEI。又如直播被预编码内容 (广告等) 打断时, 预编码片段的首个帧内图像会提前发送。发送首个帧内图像时, 发送端无法确切预知预编码片段首个帧内图像之前会编码多少 NAL 单元, 故预编码片段首个帧内图像的 NAL 单元在发送时需估计 DON, 可能出现 DON 间隙。