跳到主要内容

13.3 Example of Robust Packet Scheduling (稳健分组调度示例)

13.3. Example of Robust Packet Scheduling (稳健分组调度示例)

下面给出稳健分组调度的示例. 例中的通信系统按视频从源到宿的处理顺序包含下列部件:

  • 摄像机与采集
  • 预编码缓存 (pre-encoding buffer)
  • 编码器 (encoder)
  • 编码图像缓存 (encoded picture buffer)
  • 发送端 (transmitter)
  • 传输信道 (transmission channel)
  • 接收端 (receiver)
  • 接收缓存 (receiver buffer)
  • 解码器 (decoder)
  • 解码图像缓存 (decoded picture buffer)
  • 显示 (display)

本例中的视频通信系统工作方式如下. 注意, 视频码流在系统各部件中是逐步且同时处理的. 源视频序列拍摄后进入预编码缓存. 预编码缓存可用于将图像从采样顺序 (sampling order) 重排为编码顺序 (encoding order), 或用于为码率控制等目的分析多帧未压缩图像. 某些情况下可能没有预编码缓存, 采样得到的图像会立即编码. 编码器从预编码缓存取图像编码, 并将输出 (即编码图像) 写入编码图像缓存. 发送端将编码图像缓存中的编码图像封装为传输分组, 经传输信道发给接收端. 接收端将收到的分组存入接收缓存. 接收端缓存过程通常包括对传输时延抖动 (transmission delay jitter) 的缓存. 接收缓存也可用于恢复编码数据的正确解码顺序. 解码器从接收缓存读取编码数据, 将解码图像输出到解码图像缓存. 解码图像缓存用于恢复图像的输出 (或显示) 顺序. 最后进行显示.

在下列示例图中, I 表示 IDR 图像 (Instantaneous Decoder Refresh picture), R 表示参考图像, N 表示非参考图像, I, R, N 后的数字表示相对解码顺序中前一 IDR 图像的采样时间. 图像序列下方的数值为缩放后的系统时钟时间戳. 本例中系统时钟可任意初始化, 时间从左向右递增. 在假定编码, 传输与解码不耗时的前提下, 每个 I, R, N 图像相对前一处理步骤 (若有) 映射到同一时间线. 因此, 同一时刻发生的事件在各图中位于同一列.

下面以采样顺序给出一段编码图像序列的子集.

    ...  N58 N59 I00 N01 N02 R03 N04 N05 R06 ... N58 N59 I00 N01 ...
... --|---|---|---|---|---|---|---|---|- ... -|---|---|---|- ...
... 58 59 60 61 62 63 64 65 66 ... 128 129 130 131 ...

图 16. 采样顺序下的图像序列

采样得到的图像在预编码缓存中重排为编码顺序. 本例假设非参考图像由输出顺序中前一参考图像与后一参考图像共同预测, 但紧挨 IDR 图像之前的非参考图像仅由输出顺序中的前一参考图像预测. 因此预编码缓存至少需容纳两幅图像, 缓存带来两个图像间隔的时延. 预编码缓存过程的输出以及图像的编码 (与解码) 顺序如下:

   ... N58 N59 I00 R03 N01 N02 R06 N04 N05 ...
... -|---|---|---|---|---|---|---|---|- ...
... 60 61 62 63 64 65 66 67 68 ...

图 17. 预编码缓存中重排后的图像

编码器或发送端可将每幅图像的 DON 设为解码顺序中前一图像的 DON 加 1.

为简化, 假设:

  • 序列帧率恒定,
  • 每幅图像仅含一个条带,
  • 每个条带封装在单个 NAL 单元分组中,
  • 无传输时延, 且
  • 图像以恒定间隔发送 (即 1 / (帧率)).

当按解码顺序传输图像时, 接收顺序如下:

   ... N58 N59 I00 R03 N01 N02 R06 N04 N05 ...
... -|---|---|---|---|---|---|---|---|- ...
... 60 61 62 63 64 65 66 67 68 ...

图 18. 按解码顺序接收的图像

可选媒体类型参数 sprop-interleaving-depth 取 0, 因为传输 (或接收) 顺序与解码顺序相同.

起初解码器需在其解码图像缓存中再缓存一个图像间隔, 以便将图像从解码顺序整理为输出顺序, 如下所示:

   ... N58 N59 I00 N01 N02 R03 N04 N05 R06 ...
... -|---|---|---|---|---|---|---|---|- ...
... 61 62 63 64 65 66 67 68 69 ...

图 19. 输出顺序

解码图像缓存所需的初始缓存量可通过缓冲周期 SEI (Supplemental Enhancement Information) 消息或 H.264 视频可用性信息 (video usability information) 中的 num_reorder_frames 语法元素来指示. num_reorder_frames 表示在解码顺序上位于任一帧, 互补场对 (complementary field pair) 或非成对场 (non-paired field) 之前, 且在输出顺序上位于其后的帧, 互补场对或非成对场的最大个数. 为简化, 假设用 num_reorder_frames 指示解码图像缓存中的初始缓存. 本例中 num_reorder_frames 等于 1.

可见, 若 IDR 图像 I00 在传输中丢失, 且在系统时钟为 62 时发出重传请求, 则仍有一个图像间隔的时间 (直到系统时钟到达时间戳 63) 可接收重传的 IDR 图像 I00.

再假设 IDR 图像比其解码位置提前两个帧间隔发送, 即图像传输顺序如下:

   ...  I00 N58 N59 R03 N01 N02 R06 N04 N05 ...
... --|---|---|---|---|---|---|---|---|- ...
... 62 63 64 65 66 67 68 69 70 ...

图 20. 交织: 发送顺序中提前的 IDR 图像

可选媒体类型参数 sprop-interleaving-depth 按定义设为 1. (本例中 sprop-interleaving-depth 可如下推导: 图像 I00 是唯一在传输顺序上位于图像 N58 或 N59 之前, 且在解码顺序上位于其后的图像. 除 I00, N58, N59 外, 传输顺序与图像解码顺序相同. 因一幅编码图像恰好封装为一个 NAL 单元, sprop-interleaving-depth 的值等于在传输顺序上位于某图像之前且在解码顺序上位于其后的图像的最大个数.)

接收端缓存过程按 sprop-interleaving-depth 的值每次同时容纳两幅图像, 并依据与各图像关联的 DON 将图像从接收顺序整理为正确解码顺序. 接收端缓存过程的输出如下:

   ... N58 N59 I00 R03 N01 N02 R06 N04 N05 ...
... -|---|---|---|---|---|---|---|---|- ...
... 63 64 65 66 67 68 69 70 71 ...

图 21. 交织: 接收缓存

同样, 将图像从解码顺序整理为输出顺序仍需一个图像间隔的初始缓存时延, 如下:

    ... N58 N59 I00 N01 N02 R03 N04 N05 ...
... -|---|---|---|---|---|---|---|- ...
... 64 65 66 67 68 69 70 71 ...

图 22. 交织: 重排后的接收缓存

注意, IDR 图像在传输中 (含可能的应用层, 传输层或链路层重传) 所能承受的最大时延为三个图像间隔. 因此, 相对按解码顺序传输图像的情形, 在支持重传的系统中 IDR 图像的抗丢失能力得到增强.