跳到主要内容

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 间隙。