5.3. NAL Unit Header Usage (NAL 单元头的使用)
5.3. NAL Unit Header Usage (NAL 单元头的使用)
NAL 单元头的结构与语义在第 1.3 节引入。为方便起见, 下面重印 NAL 单元头格式:
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|F|NRI| Type |
+---------------+
本节根据本规范规定 F 与 NRI 的语义。
F: 1 比特
forbidden_zero_bit (禁止零比特)。值为 0 表示 NAL 单元类型八位组与负载不应包含比特错误或其他语法违规。值为 1 表示可能包含比特错误或其他语法违规。
媒体感知网络元素 (Media-Aware Network Element, MANE) 在检测到 NAL 单元中的比特错误时应该 (SHOULD) 设置 F 位。H.264 规范要求 F 位等于 0。当 F 位被置位时, 建议解码器认为负载或 NAL 单元类型八位组中可能存在比特错误或其他语法违规。对 F 位为 1 的 NAL 单元, 最简单的解码器反应是丢弃该 NAL 单元并对丢弃数据做隐藏。
NRI: 2 比特
nal_ref_idc。值 00 与非零值的语义与 H.264 规范不变。换言之, 00 表示该 NAL 单元内容不用于重建帧间预测用的参考图像; 此类 NAL 单元可在不危及参考图像完整性的前提下丢弃。大于 00 的值表示需要解码该 NAL 单元以维持参考图像的完整性。
除上述规定外, 按本 RTP 负载规范, NRI 的值还表示由编码器确定的相对传输优先级。MANE 可利用该信息更重要地保护更重要的 NAL 单元。最高传输优先级为 11, 其次 10, 再其次 01; 最低为 00。
说明性注: H.264 解码器对 NRI 的任意非零值处理相同。因此, 接收端在将 NAL 单元送交解码器时无需操纵 NRI 的值。
当 nal_unit_type 在 1 至 12 范围内 (含端点) 时, H.264 编码器必须 (MUST) 按 H.264 规范 (子条款 7.4.1) 设置 NRI。特别地, H.264 规范要求对所有 nal_unit_type 为 6, 9, 10, 11 或 12 的 NAL 单元, NRI 的值应 (SHALL) 等于 0。
对 nal_unit_type 为 7 或 8 的 NAL 单元 (分别表示序列参数集或图像参数集), H.264 编码器应该 (SHOULD) 将 NRI 设为 11 (二进制)。对主编码图像中 nal_unit_type 为 5 的编码片 NAL 单元 (表示属于 IDR 图像的编码片), H.264 编码器应该 (SHOULD) 将 NRI 设为 11 (二进制)。
对其余 nal_unit_type 到 NRI 值的映射, 可以 (MAY) 使用以下示例, 已在某环境中证明有效 [14]。根据应用与所用 H.264 配置文件, 也可能 (MAY) 需要其他映射。
说明性注: 某些配置文件 (例如 Main 或 Baseline) 中不可用数据分区。因此, NAL 单元类型 2, 3, 4 仅当码流符合允许数据分区的配置文件时才可出现, 而不出现在符合 Main 或 Baseline 的码流中。
表 2. 主编码参考图像的编码片与编码片数据分区之 NRI 值示例
| NAL 单元类型 | NAL 单元内容 | NRI (二进制) |
|---|---|---|
| 1 | 非 IDR 编码片 | 10 |
| 2 | 编码片数据分区 A | 10 |
| 3 | 编码片数据分区 B | 01 |
| 4 | 编码片数据分区 C | 01 |
说明性注: 如前所述, 非参考图像的 NRI 值按 H.264 规定为 00。
对冗余编码参考图像的编码片及编码片数据分区 NAL 单元, H.264 编码器应该 (SHOULD) 将 NRI 设为 01 (二进制)。
NAL 单元类型 24 至 29 (含) 的 NRI 取值定义见本备忘录第 5.7 与 5.8 节。
对 nal_unit_type 在 13 至 23 范围内 (含) 的 NAL 单元, 因这些值保留给 ITU-T 与 ISO/IEC, 本规范不对 NRI 给出建议。对 nal_unit_type 为 0 或在 30 至 31 范围内 (含) 的 NAL 单元, 因本备忘录未规定其语义, 亦不对 NRI 给出建议。