目录2.2.1 序列头信息2.2.2 帧头信息2.2.4 时间分隔符信息2.2.5 切片组信息AV1 比特流是由一系列名为开放比特流单元OBU的数据单元组成。每个 OBU 由一个可变长度的字节串Byte String组成。具体来讲OBU 包含一个头部信息Header和一个有效载荷Payload。头部信息用于识别 OBU 类型并指定有效载荷的大小。OBU 头部信息包含obu_forbidden_bit、obu_type、obu_extension_flag、obu_has_size_field和obu_reserved_1bit。其中obu_forbidden_bit占用 1 比特其值必须设置为 0obu_type占用 4 比特所以obu_type共有 16 种取值obu_extension_flag、obu_has_size_field和obu_reserved_1bit各占用 1 比特。图 2-2 所示为 AV1 中 OBU 的组成结构。图2-2 AV1中OBU的组成结构在图 2-2 中0 表示obu_forbidden_bite、s 和 r 分别表示obu_extension_flag、obu_has_size_field和obu_reserved_1bittemp_id表示语法元素temporal_id占用 3 比特s_id表示语法元素spatial_id占用 2 比特reserved表示语法元素extension_header_reserved_3bits占用 3 比特obu_size表示以字节为单位指定 OBU 的大小但是不包括obu_header中的字节或obu_size语法元素中的字节它是可选的即 OBU 不需要必须包含obu_sizetrail_bits包括语法元素trailing_one_bit和trailing_zero_bit。OBU 头部信息中的obu_type指定 OBU 有效载荷中包含的数据结构类型。表 2-1 所示为obu_type的取值以及其代表的含义。其中“保留值” 是为将来使用而保留的AV1 解码器应该忽略它们。表 2-1obu_type的取值以及其代表的含义obu_type取值含义obu_type取值含义0保留值6OBU_FRAME1OBU_SEQUENCE_HEADER7OBU_REDUNDANT_FRAME_HEADER2OBU_TEMPORAL_DELIMITER8OBU_TILE_LIST3OBU_FRAME_HEADER9~14保留值4OBU_TILE_GROUP15OBU_PADDING5OBU_METADATA根据obu_type的取值OBU 可以分为序列头部 OBUOBU_SEQUENCE_HEADER、帧头部 OBUOBU_FRAME_HEADER、元数据信息 OBUOBU_METADATA、时间分隔符 OBUOBU_TEMPORAL_DELIMITER和切片组 OBUOBU_TILE_GROUP。OBU 头部信息中的obu_extension_flag用于指明可选的 OBU 扩展头信息OBU Extension Header是否存在。当obu_extension_flag等于 1 时表示存在 OBU 扩展头信息。此时解码器将从 OBU 扩展头信息读取当前 OBU 的时域索引temporal_id和空域索引spatial_id。OBU 的temporal_id指定了 OBU 所包含数据的时域层Temporal Level。OBU 的spatial_id则指定了 OBU 所包含数据的空域层Spatial Level。如果当前 OBU 的temporal_id或spatial_id不存在那么解码器将把其temporal_id或spatial_id设置为 0。如果使用了扩展性编码Scalable Coding则temporal_id和spatial_id都等于 0 的切片组 OBU 称为基础层Base Layer而spatial_id大于 0 或者temporal_id大于 0 的切片组 OBU 称为增强层Enhancement Layer。如果一个编码视频序列包含至少一个增强层那么所有与基础层和增强层数据相关的帧头 OBU 和切片组 OBU 都必须包括 OBU 扩展头信息。也就是说当编码视频序列包含增强层时需要用 OBU 扩展头信息来指明 OBU 的spatial_id和temporal_id。这是因为 AV1 利用压缩视频数据的spatial_id和temporal_id来决定它们之间的参考关系。假设有 2 个压缩视频数据 A 和 B其中 A 的temporal_id和spatial_id分别是 T 和 SB 的temporal_id和spatial_id分别是 T 和 S那么只有当 T≥ T 并且 S≥ S 时A 才能够参考 B。在 AV1 中要解码的空域层或时域层称为操作点Operating PointOP。所有的操作点组成了编码视频序列Coded Video Sequence。如果没有使用扩展性编码则可以视为整个编码视频序列只包含一个操作点。2.2.1 序列头信息序列头部 OBU 的内容是序列头信息Sequence Header。类似于 HEVC 中的序列级参数集Sequence Parameter SetSPS序列头信息包含适用于整个编码序列的参数信息。这些参数在编码视频序列中的每个图像之间不会发生改变。序列头信息中的一些参数提供了编码序列的关键描述这对于系统接口非常有用其他参数则描述了编码工具的使用状态或者提供了编码工具参数这可以提高编码效率。除此之外序列头信息还可以选择性地包含视频可用性信息数据。这些信息虽然不会直接影响解码过程但提供了两类有价值的数据。第一类与解码图片的显示有关比如色度配置Color Config Syntax等信息。第二类包括假设参考解码器Hypothetical Reference DecoderHRD使用的时间信息Timing Info Syntax、解码模型信息Decoder Model Info Syntax以及解码操作参数信息Operating Parameters Info Syntax。比如语法元素still_picture用于指示编码视频序列是否仅由单一编码帧组成。当still_picture设置为 1 时意味着整个编码视频序列仅由单一的编码帧组成这通常用于静态图像或类似于图片的场景。当still_picture设置为 0 时表示编码视频序列由一系列视频帧组成。语法元素operating_points_cnt_minus_1用于指示编码视频序列包含多少个操作点它的数值等于操作点的总数减去 1。所以实际的操作点数量需要在该值的基础上加 1 来得到。例如如果operating_points_cnt_minus_1的值为 3那么视频序列中就有 4 个操作点。语法元素operating_point_idc[i]包含一个位掩码Bit Mask用于指示操作点 i 应该解码哪些空域层和时域层。在这个位掩码中低 8 位索引为 07表示时域层高 4 位索引为 811表示空域层。每一位的值0 或 1决定了对应的层是否应该被解码器处理。具体来讲如果要解码时域层 k则把第 k 位设置为 1其中 k 的范围是 07。如果要解码空域层 j则把第 j8 位设置为 1其中 j 的范围是 03。描述编码序列特性的关键参数也包含在序列头信息中。语法元素seq_profile和seq_level_idx指明编码视频所使用的档次和级别。档次和级别指定了解码比特流所需的能力限制。档次指定了支持的视频位宽和色度下采样格式而级别定义了分辨率和性能特征比如对最大采样率、图片大小和解码图片缓冲区等能力施加限制。在序列头信息中可以设置各种编码工具的启用或禁用选项以及对这些工具的限制。例如如果将序列头中的use_128x128_superblock参数设置为 0那么编码器就不会使用 128×128 像素的超级块进行编码。同样如果将enable_warped_motion参数设置为 0那么在帧间预测时就不会使用畸变运动补偿技术。这样做的结果是编码器无须传输与畸变运动补偿相关的语法元素从而简化了编码过程。2.2.2 帧头信息帧头 OBU 的内容是帧头Frame Header信息。类似于 HEVC 中的帧级参数集Picture Parameter SetPPS帧头信息包含的参数可能在同一编码视频序列中的不同图片之间发生变化。下面介绍几个常用的帧头信息的语法元素。帧头信息中的语法元素show_frame在 AV1 中用于控制解码后的视频帧是否立即显示。当show_frame的值设置为 1 时表示一旦该视频帧完成解码它就应该立即显示相反如果show_frame的值设置为 0则意味着该帧在解码后不会立即显示。此外如果后续接收到的帧头信息中包含语法元素show_existing_frame并且其值被设置为 1那么之前那些解码完成但show_frame为 0 的帧就可能被展示。在视频编码的特定应用场景中这些语法元素可以灵活控制帧的显示时机。基于show_frame和show_existing_frame的视频帧显示机制AV1 解码器在解码顺序与输出顺序不同时可以进行帧重排序以使解码视频帧按照输出顺序显示。帧头信息中的语法元素frame_type用于指明视频图片的帧类型。AV1 定义了 4 种帧类型KEY_FRAME、INTER_FRAME、INTRA_ONLY_FRAME和SWITCH_FRAME。表 2-2 所示为frame_type的取值及帧类型。表 2-2frame_type的取值及帧类型语法元素frame_type的取值帧类型0KEY_FRAME1INTER_FRAME2INTRA_ONLY_FRAME3SWITCH_FRAME语法元素refresh_frame_flags用于指明 DPB 的更新机制。具体来讲当一个视频帧编码结束后编码器根据该帧头信息中refresh_frame_flags的取值来决定把当前视频帧放入 DPB 中的哪个位置。当帧头信息中的frame_typeKEY_FRAME并且show_frame1时refresh_frame_flags被设置为0xFF这个关键帧将占据 DPB 中的所有位置。从这个角度来看AV1 中的KEY_FRAME类似于 HEVC 中的 IDR 帧因为它们都会重新设置 DPB 状态。下面再总结一下不同帧类型之间的区别如果当前帧的语法元素frame_typeKEY_FRAME则当前帧通常被称为关键帧。关键帧中的所有编码块只能使用帧内预测模式并且当关键帧的语法元素show_frame1时关键帧将会重新设置 DPB 状态。所以当关键帧的语法元素show_frame1时任何编码顺序位于此关键帧之后的视频帧都不能把编码顺序位于它之前的视频帧作为参考帧。这样的规则确保了在关键帧之后编码的视频帧仅依赖于关键帧本身而不依赖于在关键帧之前编码的任何视频帧从而保持了关键帧的随机访问特性。如果当前帧的frame_typeINTRA_ONLY_FRAME则当前帧通常又称为普通帧内预测帧。与关键帧类似普通帧内预测帧中的所有编码块也只能使用帧内预测模式。然而与关键帧不同的是普通帧内预测帧不会重新设置 DPB 状态。因此在普通帧内预测帧之后编码的视频帧仍可以把在该普通帧内预测帧之前编码的视频帧作为参考帧。这样的设计允许视频编码过程中的后续帧利用先前帧的信息以优化预测效果并提高编码效率。如果当前帧的语法元素frame_typeINTER_FRAME则当前帧的编码块不但可以使用帧内预测模式还可以使用帧间预测模式。如果当前帧的语法元素frame_typeSWITCH_FRAME则表示当前帧的分辨率将发生变换即当前帧的分辨率不再等于序列头传输的视频帧分辨率。对于语法元素frame_typeSWITCH_FRAME的视频帧其编码块可以使用帧内预测模式也可以帧间预测模式。当编码块使用帧间预测时由于当前帧与参考帧之间的分辨率可能不同因此要使用缩放帧间预测关于缩放帧间预测请参考第 9 章。另外需要注意的是语法元素frame_typeSWITCH_FRAME的视频帧也能够重新设置 DPB 状态。所以frame_typeSWITCH_FRAME的帧具备重新设置 DPB 状态的能力而无须强制进行帧内预测从而使视频编码更加灵活。2.2.3 元数据信息元数据信息 OBU 的作用是传输视频编码过程中的元数据信息。元数据包括色彩空间信息、高动态范围High Dynamic RangeHDR信息、可扩展性编码信息以及时间信息。为了区分元数据中的信息AV1 定义了语法元素metadata_type以指明元数据存储的数据类型。表 2-3 所示为metadata_type的取值及元数据类型。表 2-3metadata_type的取值及元数据类型语法元素metadata_type的取值元数据类型0AOM 保留值1METADATA_TYPE_HDR_CLL2METADATA_TYPE_HDR_MDCV3METADATA_TYPE_SCALABILITY4METADATA_TYPE_ITUT_T355METADATA_TYPE_TIMECODE6 ~ 31未注册用户私有Unregistered User Private大于或等于 32AOM 保留值这里需要注意的是当metadata_type等于 3 时即元数据类型是METADATA_TYPE_SCALABILITY此时元数据 OBU 是可扩展性编码信息。可扩展性编码信息旨在让中间处理模块不需要解码单独帧就能了解视频比特流的结构。为了使这些中间处理模块能够尽早了解视频序列的可扩展性结构可扩展性编码信息应紧跟在序列头之后放置。2.2.4 时间分隔符信息时间分隔符 OBU 用于传输时间分隔符信息。时间分隔符用于指明帧在显示过程中的时间戳。所有在时间分隔符 OBU 之后显示的帧都将使用这个时间戳直到下一个时间分隔符 OBU 到达。这意味着从时间分隔符 OBU 开始所有后续的帧都会根据这个时间戳来同步播放直到遇到下一个时间分隔符 OBU这时可能会开始一个新的时间戳序列。2.2.5 切片组信息在 AV1 编码中一个视频帧可以被分割成多个尺寸更小、更易于处理的切片Tile。每个切片包含视频帧的一部分数据并且可以单独解码。所有切片都完成解码并且经过环路滤波器处理之后会被组合起来形成完整的重构图像。切片组包含了一帧图像中所有切片的数据用于解码和呈现整个帧。比如编码块的帧内预测模式、运动向量和残差数据等信息都属于切片组信息。为了提高效率帧头 OBU 和切片组 OBU 会打包成一个 OBU在这种情况下帧头信息后面紧跟着的是切片组信息。包含帧头信息和切片组信息的 OBU 又称为帧 OBUFrame OBU。
av1编码--比特流结构
发布时间:2026/5/22 20:29:08
目录2.2.1 序列头信息2.2.2 帧头信息2.2.4 时间分隔符信息2.2.5 切片组信息AV1 比特流是由一系列名为开放比特流单元OBU的数据单元组成。每个 OBU 由一个可变长度的字节串Byte String组成。具体来讲OBU 包含一个头部信息Header和一个有效载荷Payload。头部信息用于识别 OBU 类型并指定有效载荷的大小。OBU 头部信息包含obu_forbidden_bit、obu_type、obu_extension_flag、obu_has_size_field和obu_reserved_1bit。其中obu_forbidden_bit占用 1 比特其值必须设置为 0obu_type占用 4 比特所以obu_type共有 16 种取值obu_extension_flag、obu_has_size_field和obu_reserved_1bit各占用 1 比特。图 2-2 所示为 AV1 中 OBU 的组成结构。图2-2 AV1中OBU的组成结构在图 2-2 中0 表示obu_forbidden_bite、s 和 r 分别表示obu_extension_flag、obu_has_size_field和obu_reserved_1bittemp_id表示语法元素temporal_id占用 3 比特s_id表示语法元素spatial_id占用 2 比特reserved表示语法元素extension_header_reserved_3bits占用 3 比特obu_size表示以字节为单位指定 OBU 的大小但是不包括obu_header中的字节或obu_size语法元素中的字节它是可选的即 OBU 不需要必须包含obu_sizetrail_bits包括语法元素trailing_one_bit和trailing_zero_bit。OBU 头部信息中的obu_type指定 OBU 有效载荷中包含的数据结构类型。表 2-1 所示为obu_type的取值以及其代表的含义。其中“保留值” 是为将来使用而保留的AV1 解码器应该忽略它们。表 2-1obu_type的取值以及其代表的含义obu_type取值含义obu_type取值含义0保留值6OBU_FRAME1OBU_SEQUENCE_HEADER7OBU_REDUNDANT_FRAME_HEADER2OBU_TEMPORAL_DELIMITER8OBU_TILE_LIST3OBU_FRAME_HEADER9~14保留值4OBU_TILE_GROUP15OBU_PADDING5OBU_METADATA根据obu_type的取值OBU 可以分为序列头部 OBUOBU_SEQUENCE_HEADER、帧头部 OBUOBU_FRAME_HEADER、元数据信息 OBUOBU_METADATA、时间分隔符 OBUOBU_TEMPORAL_DELIMITER和切片组 OBUOBU_TILE_GROUP。OBU 头部信息中的obu_extension_flag用于指明可选的 OBU 扩展头信息OBU Extension Header是否存在。当obu_extension_flag等于 1 时表示存在 OBU 扩展头信息。此时解码器将从 OBU 扩展头信息读取当前 OBU 的时域索引temporal_id和空域索引spatial_id。OBU 的temporal_id指定了 OBU 所包含数据的时域层Temporal Level。OBU 的spatial_id则指定了 OBU 所包含数据的空域层Spatial Level。如果当前 OBU 的temporal_id或spatial_id不存在那么解码器将把其temporal_id或spatial_id设置为 0。如果使用了扩展性编码Scalable Coding则temporal_id和spatial_id都等于 0 的切片组 OBU 称为基础层Base Layer而spatial_id大于 0 或者temporal_id大于 0 的切片组 OBU 称为增强层Enhancement Layer。如果一个编码视频序列包含至少一个增强层那么所有与基础层和增强层数据相关的帧头 OBU 和切片组 OBU 都必须包括 OBU 扩展头信息。也就是说当编码视频序列包含增强层时需要用 OBU 扩展头信息来指明 OBU 的spatial_id和temporal_id。这是因为 AV1 利用压缩视频数据的spatial_id和temporal_id来决定它们之间的参考关系。假设有 2 个压缩视频数据 A 和 B其中 A 的temporal_id和spatial_id分别是 T 和 SB 的temporal_id和spatial_id分别是 T 和 S那么只有当 T≥ T 并且 S≥ S 时A 才能够参考 B。在 AV1 中要解码的空域层或时域层称为操作点Operating PointOP。所有的操作点组成了编码视频序列Coded Video Sequence。如果没有使用扩展性编码则可以视为整个编码视频序列只包含一个操作点。2.2.1 序列头信息序列头部 OBU 的内容是序列头信息Sequence Header。类似于 HEVC 中的序列级参数集Sequence Parameter SetSPS序列头信息包含适用于整个编码序列的参数信息。这些参数在编码视频序列中的每个图像之间不会发生改变。序列头信息中的一些参数提供了编码序列的关键描述这对于系统接口非常有用其他参数则描述了编码工具的使用状态或者提供了编码工具参数这可以提高编码效率。除此之外序列头信息还可以选择性地包含视频可用性信息数据。这些信息虽然不会直接影响解码过程但提供了两类有价值的数据。第一类与解码图片的显示有关比如色度配置Color Config Syntax等信息。第二类包括假设参考解码器Hypothetical Reference DecoderHRD使用的时间信息Timing Info Syntax、解码模型信息Decoder Model Info Syntax以及解码操作参数信息Operating Parameters Info Syntax。比如语法元素still_picture用于指示编码视频序列是否仅由单一编码帧组成。当still_picture设置为 1 时意味着整个编码视频序列仅由单一的编码帧组成这通常用于静态图像或类似于图片的场景。当still_picture设置为 0 时表示编码视频序列由一系列视频帧组成。语法元素operating_points_cnt_minus_1用于指示编码视频序列包含多少个操作点它的数值等于操作点的总数减去 1。所以实际的操作点数量需要在该值的基础上加 1 来得到。例如如果operating_points_cnt_minus_1的值为 3那么视频序列中就有 4 个操作点。语法元素operating_point_idc[i]包含一个位掩码Bit Mask用于指示操作点 i 应该解码哪些空域层和时域层。在这个位掩码中低 8 位索引为 07表示时域层高 4 位索引为 811表示空域层。每一位的值0 或 1决定了对应的层是否应该被解码器处理。具体来讲如果要解码时域层 k则把第 k 位设置为 1其中 k 的范围是 07。如果要解码空域层 j则把第 j8 位设置为 1其中 j 的范围是 03。描述编码序列特性的关键参数也包含在序列头信息中。语法元素seq_profile和seq_level_idx指明编码视频所使用的档次和级别。档次和级别指定了解码比特流所需的能力限制。档次指定了支持的视频位宽和色度下采样格式而级别定义了分辨率和性能特征比如对最大采样率、图片大小和解码图片缓冲区等能力施加限制。在序列头信息中可以设置各种编码工具的启用或禁用选项以及对这些工具的限制。例如如果将序列头中的use_128x128_superblock参数设置为 0那么编码器就不会使用 128×128 像素的超级块进行编码。同样如果将enable_warped_motion参数设置为 0那么在帧间预测时就不会使用畸变运动补偿技术。这样做的结果是编码器无须传输与畸变运动补偿相关的语法元素从而简化了编码过程。2.2.2 帧头信息帧头 OBU 的内容是帧头Frame Header信息。类似于 HEVC 中的帧级参数集Picture Parameter SetPPS帧头信息包含的参数可能在同一编码视频序列中的不同图片之间发生变化。下面介绍几个常用的帧头信息的语法元素。帧头信息中的语法元素show_frame在 AV1 中用于控制解码后的视频帧是否立即显示。当show_frame的值设置为 1 时表示一旦该视频帧完成解码它就应该立即显示相反如果show_frame的值设置为 0则意味着该帧在解码后不会立即显示。此外如果后续接收到的帧头信息中包含语法元素show_existing_frame并且其值被设置为 1那么之前那些解码完成但show_frame为 0 的帧就可能被展示。在视频编码的特定应用场景中这些语法元素可以灵活控制帧的显示时机。基于show_frame和show_existing_frame的视频帧显示机制AV1 解码器在解码顺序与输出顺序不同时可以进行帧重排序以使解码视频帧按照输出顺序显示。帧头信息中的语法元素frame_type用于指明视频图片的帧类型。AV1 定义了 4 种帧类型KEY_FRAME、INTER_FRAME、INTRA_ONLY_FRAME和SWITCH_FRAME。表 2-2 所示为frame_type的取值及帧类型。表 2-2frame_type的取值及帧类型语法元素frame_type的取值帧类型0KEY_FRAME1INTER_FRAME2INTRA_ONLY_FRAME3SWITCH_FRAME语法元素refresh_frame_flags用于指明 DPB 的更新机制。具体来讲当一个视频帧编码结束后编码器根据该帧头信息中refresh_frame_flags的取值来决定把当前视频帧放入 DPB 中的哪个位置。当帧头信息中的frame_typeKEY_FRAME并且show_frame1时refresh_frame_flags被设置为0xFF这个关键帧将占据 DPB 中的所有位置。从这个角度来看AV1 中的KEY_FRAME类似于 HEVC 中的 IDR 帧因为它们都会重新设置 DPB 状态。下面再总结一下不同帧类型之间的区别如果当前帧的语法元素frame_typeKEY_FRAME则当前帧通常被称为关键帧。关键帧中的所有编码块只能使用帧内预测模式并且当关键帧的语法元素show_frame1时关键帧将会重新设置 DPB 状态。所以当关键帧的语法元素show_frame1时任何编码顺序位于此关键帧之后的视频帧都不能把编码顺序位于它之前的视频帧作为参考帧。这样的规则确保了在关键帧之后编码的视频帧仅依赖于关键帧本身而不依赖于在关键帧之前编码的任何视频帧从而保持了关键帧的随机访问特性。如果当前帧的frame_typeINTRA_ONLY_FRAME则当前帧通常又称为普通帧内预测帧。与关键帧类似普通帧内预测帧中的所有编码块也只能使用帧内预测模式。然而与关键帧不同的是普通帧内预测帧不会重新设置 DPB 状态。因此在普通帧内预测帧之后编码的视频帧仍可以把在该普通帧内预测帧之前编码的视频帧作为参考帧。这样的设计允许视频编码过程中的后续帧利用先前帧的信息以优化预测效果并提高编码效率。如果当前帧的语法元素frame_typeINTER_FRAME则当前帧的编码块不但可以使用帧内预测模式还可以使用帧间预测模式。如果当前帧的语法元素frame_typeSWITCH_FRAME则表示当前帧的分辨率将发生变换即当前帧的分辨率不再等于序列头传输的视频帧分辨率。对于语法元素frame_typeSWITCH_FRAME的视频帧其编码块可以使用帧内预测模式也可以帧间预测模式。当编码块使用帧间预测时由于当前帧与参考帧之间的分辨率可能不同因此要使用缩放帧间预测关于缩放帧间预测请参考第 9 章。另外需要注意的是语法元素frame_typeSWITCH_FRAME的视频帧也能够重新设置 DPB 状态。所以frame_typeSWITCH_FRAME的帧具备重新设置 DPB 状态的能力而无须强制进行帧内预测从而使视频编码更加灵活。2.2.3 元数据信息元数据信息 OBU 的作用是传输视频编码过程中的元数据信息。元数据包括色彩空间信息、高动态范围High Dynamic RangeHDR信息、可扩展性编码信息以及时间信息。为了区分元数据中的信息AV1 定义了语法元素metadata_type以指明元数据存储的数据类型。表 2-3 所示为metadata_type的取值及元数据类型。表 2-3metadata_type的取值及元数据类型语法元素metadata_type的取值元数据类型0AOM 保留值1METADATA_TYPE_HDR_CLL2METADATA_TYPE_HDR_MDCV3METADATA_TYPE_SCALABILITY4METADATA_TYPE_ITUT_T355METADATA_TYPE_TIMECODE6 ~ 31未注册用户私有Unregistered User Private大于或等于 32AOM 保留值这里需要注意的是当metadata_type等于 3 时即元数据类型是METADATA_TYPE_SCALABILITY此时元数据 OBU 是可扩展性编码信息。可扩展性编码信息旨在让中间处理模块不需要解码单独帧就能了解视频比特流的结构。为了使这些中间处理模块能够尽早了解视频序列的可扩展性结构可扩展性编码信息应紧跟在序列头之后放置。2.2.4 时间分隔符信息时间分隔符 OBU 用于传输时间分隔符信息。时间分隔符用于指明帧在显示过程中的时间戳。所有在时间分隔符 OBU 之后显示的帧都将使用这个时间戳直到下一个时间分隔符 OBU 到达。这意味着从时间分隔符 OBU 开始所有后续的帧都会根据这个时间戳来同步播放直到遇到下一个时间分隔符 OBU这时可能会开始一个新的时间戳序列。2.2.5 切片组信息在 AV1 编码中一个视频帧可以被分割成多个尺寸更小、更易于处理的切片Tile。每个切片包含视频帧的一部分数据并且可以单独解码。所有切片都完成解码并且经过环路滤波器处理之后会被组合起来形成完整的重构图像。切片组包含了一帧图像中所有切片的数据用于解码和呈现整个帧。比如编码块的帧内预测模式、运动向量和残差数据等信息都属于切片组信息。为了提高效率帧头 OBU 和切片组 OBU 会打包成一个 OBU在这种情况下帧头信息后面紧跟着的是切片组信息。包含帧头信息和切片组信息的 OBU 又称为帧 OBUFrame OBU。