来自 ITU-T H.264 (03/2009):
7.4.1.2.3 NAL 单元和编码图片的顺序以及与访问单元的关联
本小节规定了 NAL 单元和编码图片的顺序以及与使用第 2-9 节中规定的解码过程解码的符合附件 A 中指定的一个或多个配置文件的编码视频序列的访问单元的关联。
一个访问单元由一个主编码图片、零个或多个相应的冗余编码图片和零个或多个非 VCL NAL 单元组成。 VCL NAL 单元与主要或冗余编码图片的关联在子条款 7.4.1.2.5 中描述。
比特流中的第一个访问单元以比特流的第一个 NAL 单元开始。
主编码图片的最后一个 VCL NAL 单元之后的任何以下 NAL 单元中的第一个指定新访问单元的开始:
- 访问单元分隔符 NAL 单元(如果存在),
- 序列参数集 NAL 单元(如果存在),
- 图片参数集 NAL 单元(如果存在),
- SEI NAL 单元(如果存在),
- nal_unit_type 范围在 14 到 18 之间的 NAL 单位(如果存在),
- 主编码图片的第一个 VCL NAL 单元(始终存在)。
第 7.4.1.2.4 小节中规定了检测主编码图像的第一个 VCL NAL 单元的约束。
7.4.1.2.4 检测主编码图片的第一个VCL NAL单元
本子条款规定了对 VCL NAL 单元语法的约束,这些约束足以检测每个主编码图片的第一个 VCL NAL 单元,以检测符合附件 A 中指定的一个或多个已解码配置文件的编码视频序列使用第 2-9 节中指定的解码过程。
当前访问单元的主要编码图片的任何编码切片 NAL 单元或编码切片数据分区 A NAL 单元应不同于当前访问单元的主要编码图片的任何编码切片 NAL 单元或编码切片数据分区 A NAL 单元通过以下一种或多种方式访问单元:
- frame_num 的值不同。用于测试此条件的 frame_num 的值是出现在 slice header 的语法中的 frame_num 的值,无论该值是否被推断为等于 0 以供后续在解码过程中使用,因为 memory_management_control_operation 的存在等于 5。(注 1 – 上述语句的结果是 frame_num 等于 1 的主编码图片不能包含等于 5 的 memory_management_control_operation,除非下面列出的一些其他条件满足其后的下一个主编码图片(如果有的话)。)
- pic_parameter_set_id 值不同。
- field_pic_flag 的值不同。
- bottom_field_flag 存在于两者中,但值不同。
- nal_ref_idc 值不同,其中一个 nal_ref_idc 值等于 0。
- pic_order_cnt_type 都等于 0,并且 pic_order_cnt_lsb 的值不同,或者 delta_pic_order_cnt_bottom 的值不同。
- pic_order_cnt_type 对于两者都等于 1,并且 delta_pic_order_cnt[0] 的值不同,或者 delta_pic_order_cnt[1] 的值不同。
- IdrPicFlag 的值不同。
- IdrPicFlag 都等于 1,并且 idr_pic_id 的值不同。
(注 2 – 冗余编码图片中的一些 VCL NAL 单元或一些非 VCL NAL 单元(例如,访问单元分隔符 NAL 单元)也可用于检测访问单元之间的边界,并且可能因此有助于检测新的主编码图片的开始。)