AV1 Bitstream Decoding Process Specification--[7]: 语法结构语义-3
原文地址:https://aomediacodec.github.io/av1-spec/av1-spec.pdf
- 没有梯子的下载地址:AV1 Bitstream & Decoding Process Specification
- 摘要:这份文档定义了开放媒体联盟(Alliance for Open Media)AV1视频编解码器的比特流格式和解码过程。
- 规范:此文档规定了开放媒体联盟(Alliance for Open Media)AV1比特流格式和解码过程。
语法结构语义(Syntax structures semantics)
帧头OBU语义(Frame header OBU semantics)
通用帧头OBU语义(General frame header OBU semantics)
- 比特流合规性的要求是,在接收到帧头OBU之前必须先接收到序列头OBU。
- frame_header_copy 是一个函数调用,表示此时应该在此插入上一帧头OBU的副本。
○ 注意:比特流可能包含多个frame_header_obu的副本,与tile_group_obu交错,以实现更高的错误恢复能力。然而,这些副本的内容必须与原始的frame_header_obu完全相同。 - 如果obu_type等于OBU_FRAME_HEADER,比特流合规性的一个要求是SeenFrameHeader必须等于0。
- 如果obu_type等于OBU_REDUNDANT_FRAME_HEADER,比特流合规性的一个要求是SeenFrameHeader必须等于1。
○ 注意:这些要求确保了一帧的第一个帧头obu_type等于OBU_FRAME_HEADER,而这个帧头的后续副本(如果存在的话)的obu_type等于OBU_REDUNDANT_FRAME_HEADER。 - TileNum是一个变量,给出了当前瓦片的索引(从零开始)。
- decode_frame_wrapup是一个函数调用,表示应该调用第7.4节中指定的解码帧结束处理过程。
未压缩头语义(Uncompressed header semantics)
-
show_existing_frame 等于1,表示应该输出由 frame_to_show_map_idx 索引的帧;show_existing_frame 等于0表示需要进一步处理。 如果 obu_type 等于 OBU_FRAME,比特流合规性的一个要求是 show_existing_frame 必须等于0。
-
frame_to_show_map_idx 指定了要输出的帧。它仅在 show_existing_frame 为 1 时可用。
-
display_frame_id 提供了要输出帧的帧ID号。比特流合规性的一个要求是,每当读取 display_frame_id 时,其值必须与 RefFrameId[frame_to_show_map_idx](即在存储由 frame_to_show_map_idx 索引的帧时的 current_frame_id 的值)匹配,并且 RefValid[frame_to_show_map_idx] 必须等于1。 比特流合规性的一个要求是读取 display_frame_id 所需的位数不超过16位。这相当于约束 idLen <= 16。
-
frame_type 指定了帧的类型:
-
show_frame 等于1表示一旦这个帧被解码,它应该立即被输出。show_frame 等于0表示这个帧不应该立即被输出。(如果后续的未压缩头部使用 show_existing_frame 等于1,那么这个帧可能会在之后被输出)。
-
showable_frame 等于 1 表示该帧可以使用 show_existing_frame 机制进行输出。showable_frame 等于 0 表示该帧不会使用 show_existing_frame 机制进行输出。
- 比特流合规性的一个要求是,当使用 show_existing_frame 来显示先前的帧时,先前帧的 showable_frame 值必须等于1。
- 比特流合规性的另一个要求是,当使用 show_existing_frame 来显示先前帧,并且 RefFrameType[frame_to_show_map_idx] 等于 KEY_FRAME 时,该帧最多只能通过 show_existing_frame 机制输出一次。
- 注意:这一要求同样禁止将 frame_type 等于 KEY_FRAME 的帧存储到多个参考帧中,然后对每个参考帧使用 show_existing_frame。
-
error_resilient_mode 等于 1 表示启用了错误恢复模式;error_resilient_mode 等于0表示禁用了错误恢复模式。
- 注意:错误恢复模式允许独立于先前解码的帧来解析帧的语法。这意味着在该模式下,即使之前帧的某些数据因错误而丢失或损坏,解码器仍能够尝试解码后续的帧,从而提高视频流的容错性。
-
disable_cdf_update 指定是否应该在符号解码过程中禁用 CDF(累积分布函数)更新。
-
current_frame_id 指定当前帧的帧ID号。帧ID是不影响解码过程的额外信息,但为解码器提供了一种检测丢失的参考帧的方法,以便采取适当的行动。 如果 frame_type 不等于 KEY_FRAME 或者 show_frame 等于0,比特流合规性的要求是以下所有条件都是正确的:
- current_frame_id 不等于 PrevFrameID(前一帧的ID),
- DiffFrameID 小于 1 << (idLen - 1),其中 DiffFrameID 定义如下:
- 如果 current_frame_id 大于 PrevFrameID,则 DiffFrameID 等于 current_frame_id - PrevFrameID。
- 否则,DiffFrameID 等于 (1 << idLen) + current_frame_id - PrevFrameID。
-
frame_size_override_flag 等于0表示帧大小与序列头中的大小相同。frame_size_override_flag 等于1表示帧大小将指定为某个参考帧的大小,或者根据 frame_width_minus_1 和 frame_height_minus_1 语法元素计算得出。
-
order_hint 用于计算 OrderHint。
-
OrderHint 指定了此帧预期输出顺序的 OrderHintBits 最低有效位。
- 注意:没有要求 OrderHint 必须反映真实的输出顺序。作为一个指导原则,如果对于稍后将要显示的帧使用真实的输出顺序,运动矢量预测的准确性会更高。如果一个帧永远不显示(例如,它作为几个帧的平均值构建用于参考目的),编码器可以自由选择任何值的 OrderHint,以获得最佳的压缩效果。
-
primary_ref_frame 指定了在帧开始时应该加载哪些包含 CDF 值和其他状态的参考帧。
- 注意:允许将 primary_ref_frame 编码为 PRIMARY_REF_NONE,这将导致使用默认值作为 CDF 值和其他状态。
-
buffer_removal_time_present_flag 等于1表示存在 buffer_removal_time。buffer_removal_time_present_flag 等于0表示不存在 buffer_removal_time。
-
buffer_removal_time[opNum] 指定了从操作点 opNum 的最后一个随机访问点的移除时间起算的帧移除时间,单位为 DecCT 时钟刻度数。buffer_removal_time 被信号化为一个固定长度的无符号整数,其长度(以位为单位)由 buffer_removal_time_length_minus_1 + 1 给出。 buffer_removal_time 是模 1 << (buffer_removal_time_length_minus_1 + 1) 计数器的余数。
-
allow_screen_content_tools 等于1表示内部块可以使用调色板编码;allow_screen_content_tools 等于0表示从不使用调色板编码。
-
allow_intrabc 等于1表示此帧中可以使用内部块复制。allow_intrabc 等于0表示此帧中不允许使用内部块复制。
- 注意:内部块复制仅允许在内部帧中使用,并禁用所有循环滤波。在内部帧中,force_integer_mv 将等于1,因此仅允许在块复制模式中使用整数偏移。
-
force_integer_mv 等于1指定运动矢量始终为整数。force_integer_mv 等于0指定运动矢量可以包含小数位。
-
ref_order_hint[i] 指定每个参考帧的预期输出顺序提示。
- 注意:ref_order_hint 数组中的值提供是为了允许实现能够优雅地处理一些帧已丢失的情况。
- 注意:当使用可伸缩性时,解码过程中的 RefOrderHint 值可能取决于所选的操作点。
-
refresh_frame_flags 包含一个位掩码,指定在当前帧解码后,哪些参考帧槽将用当前帧更新。 如果 frame_type 等于 INTRA_ONLY_FRAME,比特流合规性的要求是 refresh_frame_flags 不等于 0xff。
- 注意:这一限制鼓励编码器正确标记随机访问点(通过在重置解码过程时强制 frame_type 等于 KEY_FRAME)。 有关帧更新过程的详细信息,请参阅第7.20节。
-
frame_refs_short_signaling 等于1表示只明确信号两个参考帧。 frame_refs_short_signaling 等于0表示明确信号所有参考帧。
-
last_frame_idx 指定用于 LAST_FRAME 的参考帧。
-
gold_frame_idx 指定用于 GOLDEN_FRAME 的参考帧。
-
set_frame_refs 是一个函数调用,表示计算 ref_frame_idx 值的概念点(在 frame_refs_short_signaling 等于1的情况下,这些语法元素被计算而不是被明确信号)。当调用此函数时,将调用第7.8节中指定的设置帧引用过程。
-
ref_frame_idx[i] 指定由交错帧使用的参考帧。比特流合规性的要求是 RefValid[ref_frame_idx[i]] 等于1,并且选定的参考帧在位深度、配置文件、色度子采样和颜色空间上与当前帧匹配。
- 注意:语法元素指示一个参考(如 LAST_FRAME、ALTREF_FRAME)。这些引用在 ref_frame_idx 数组中查找,以确定在交错预测期间应该使用哪个参考帧。ref_frame_idx 中的值没有要求必须是唯一的。
-
RefFrameSignBias 指定每个参考帧的运动矢量预期的时间方向。符号偏置等于0表示参考帧是前向引用(即预期参考帧会在当前帧之前输出);符号偏置等于1表示参考帧是后向引用。
- 注意:符号偏置只是一个可以提高运动矢量预测准确性的指示,并不局限于反映图片的实际输出顺序。
-
delta_frame_id_minus_1 用于计算 DeltaFrameId。
-
DeltaFrameId 指定与参考帧的帧ID的距离。
-
RefFrameId[i] 指定每个参考帧的帧ID。
-
expectedFrameId[i] 指定用于参考的每一帧的帧ID。比特流合规性的要求是,每当计算 expectedFrameId[i] 时,其值必须与 RefFrameId[ref_frame_idx[i]] 匹配(这包含由 ref_frame_idx 索引的帧存储时的 current_frame_id 值)。
-
allow_high_precision_mv 等于0时指定运动矢量以四分之一像素精度指定;allow_high_precision_mv 等于1时指定运动矢量以八分之一像素精度指定。
-
is_motion_mode_switchable 等于0时指定仅使用简单(SIMPLE)运动模式。
-
use_ref_frame_mvs 等于1时指定在解码当前帧时可以使用前一帧的运动矢量信息。use_ref_frame_mvs 等于0时指定不使用此信息。
-
disable_frame_end_update_cdf 等于1表示禁用帧结束时的CDF更新;disable_frame_end_update_cdf 等于0表示启用帧结束时的CDF更新。
- 注意:禁用CDF更新可能是有用的,因为这意味着一旦处理完当前帧的帧头,就可以开始解码下一帧。
-
motion_field_estimation 是一个函数调用,表示应调用第7.9节中的运动场估计过程。
-
OrderHints 指定每个参考帧的预期输出顺序。
-
CodedLossless 是一个变量,当所有片段使用无损编码时等于1。这表明该帧在 FrameWidth 乘以 FrameHeight 的编码分辨率下完全无损。在这种情况下,循环滤波器和CDEF滤波器被禁用。比特流合规性的要求是,当 CodedLossless 等于1时,delta_q_present 必须等于0。
-
AllLossless 是一个变量,当 CodedLossless 等于1且 FrameWidth 等于 UpscaledWidth 时等于1。这表明该帧在放大分辨率下完全无损。在这种情况下,循环滤波器、CDEF滤波器和循环恢复被禁用。
-
allow_warped_motion 等于1表示语法元素 motion_mode 可能存在。allow_warped_motion 等于0表示语法元素 motion_mode 不会存在(这意味着如果 allow_warped_motion 等于0,则不能信号 LOCALWARP)。
-
reduced_tx_set 等于1指定该帧限制使用变换类型的缩减子集。
-
setup_past_independence 是一个函数调用,表示此帧可以独立于先前编码的帧进行解码。当调用此函数时,会发生以下情况:
- 对于 i = 0…MAX_SEGMENTS-1 和 j = 0…SEG_LVL_MAX-1,将 FeatureData[i][j] 和 FeatureEnabled[i][j] 设置为0。
- 对于 row = 0…MiRows-1 和 col = 0…MiCols-1,将 PrevSegmentIds[row][col] 设置为0。
- 对于 ref = LAST_FRAME…ALTREF_FRAME,将 GmType[ref] 设置为 IDENTITY。
- 对于 ref = LAST_FRAME…ALTREF_FRAME,对于 i = 0…5,将 PrevGmParams[ref][i] 设置为 ((i % 3 == 2) ? 1 << WARPEDMODEL_PREC_BITS : 0)。
- 将 loop_filter_delta_enabled 设置为1。
- 将 loop_filter_ref_deltas[INTRA_FRAME] 设置为1。
- 将 loop_filter_ref_deltas[LAST_FRAME] 设置为0。
- 将 loop_filter_ref_deltas[LAST2_FRAME] 设置为0。
- 将 loop_filter_ref_deltas[LAST3_FRAME] 设置为0。
- 将 loop_filter_ref_deltas[BWDREF_FRAME] 设置为0。
- 将 loop_filter_ref_deltas[GOLDEN_FRAME] 设置为-1。
- 将 loop_filter_ref_deltas[ALTREF_FRAME] 设置为-1。
- 将 loop_filter_ref_deltas[ALTREF2_FRAME] 设置为-1。
- 对于 i = 0…1,将 loop_filter_mode_deltas[i] 设置为0。
-
init_non_coeff_cdfs 是一个函数调用,表示应该初始化在 coeff() 语法结构中未使用的 CDF(累积分布函数)表。当调用这个函数时,以下步骤适用:
- YModeCdf 被设置为 Default_Y_Mode_Cdf 的副本
- UVModeCflNotAllowedCdf 被设置为 Default_Uv_Mode_Cfl_Not_Allowed_Cdf 的副本
- UVModeCflAllowedCdf 被设置为 Default_Uv_Mode_Cfl_Allowed_Cdf 的副本
- AngleDeltaCdf 被设置为 Default_Angle_Delta_Cdf 的副本
- IntrabcCdf 被设置为 Default_Intrabc_Cdf 的副本
- PartitionW8Cdf 被设置为 Default_Partition_W8_Cdf 的副本
- PartitionW16Cdf 被设置为 Default_Partition_W16_Cdf 的副本
- PartitionW32Cdf 被设置为 Default_Partition_W32_Cdf 的副本
- PartitionW64Cdf 被设置为 Default_Partition_W64_Cdf 的副本
- PartitionW128Cdf 被设置为 Default_Partition_W128_Cdf 的副本
- SegmentIdCdf 被设置为 Default_Segment_Id_Cdf 的副本
- SegmentIdPredictedCdf 被设置为 Default_Segment_Id_Predicted_Cdf 的副本
- Tx8x8Cdf 被设置为 Default_Tx_8x8_Cdf 的副本
- Tx16x16Cdf 被设置为 Default_Tx_16x16_Cdf 的副本
- Tx32x32Cdf 被设置为 Default_Tx_32x32_Cdf 的副本
- Tx64x64Cdf 被设置为 Default_Tx_64x64_Cdf 的副本
- TxfmSplitCdf 被设置为 Default_Txfm_Split_Cdf 的副本
- FilterIntraModeCdf 被设置为 Default_Filter_Intra_Mode_Cdf 的副本
- FilterIntraCdf 被设置为 Default_Filter_Intra_Cdf 的副本
- InterpFilterCdf 被设置为 Default_Interp_Filter_Cdf 的副本
- MotionModeCdf 被设置为 Default_Motion_Mode_Cdf 的副本
- NewMvCdf 被设置为 Default_New_Mv_Cdf 的副本
- ZeroMvCdf 被设置为 Default_Zero_Mv_Cdf 的副本
- RefMvCdf 被设置为 Default_Ref_Mv_Cdf 的副本
- CompoundModeCdf 被设置为 Default_Compound_Mode_Cdf 的副本
- DrlModeCdf 被设置为 Default_Drl_Mode_Cdf 的副本
- IsInterCdf 被设置为 Default_Is_Inter_Cdf 的副本
- CompModeCdf 被设置为 Default_Comp_Mode_Cdf 的副本
- SkipModeCdf 被设置为 Default_Skip_Mode_Cdf 的副本
- SkipCdf 被设置为 Default_Skip_Cdf 的副本
- CompRefCdf 被设置为 Default_Comp_Ref_Cdf 的副本
- CompBwdRefCdf 被设置为 Default_Comp_Bwd_Ref_Cdf 的副本
- SingleRefCdf 被设置为 Default_Single_Ref_Cdf 的副本
- MvJointCdf[ i ] 对于 i = 0…MV_CONTEXTS-1 被设置为 Default_Mv_Joint_Cdf 的副本
- MvClassCdf[ i ] 对于 i = 0…MV_CONTEXTS-1 被设置为 Default_Mv_Class_Cdf 的副本
- MvClass0BitCdf[ i ][ comp ] 对于 i = 0…MV_CONTEXTS-1 和 comp = 0…1 被设置为 Default_Mv_Class0_Bit_Cdf 的副本
- MvFrCdf[ i ] 对于 i = 0…MV_CONTEXTS-1 被设置为 Default_Mv_Fr_Cdf 的副本
- MvClass0FrCdf[ i ] 对于 i = 0…MV_CONTEXTS-1 被设置为 Default_Mv_Class0_Fr_Cdf 的副本
- MvClass0HpCdf[ i ][ comp ] 对于 i = 0…MV_CONTEXTS-1 和 comp = 0…1 被设置为 Default_Mv_Class0_Hp_Cdf 的副本
- MvSignCdf[ i ][ comp ] 对于 i = 0…MV_CONTEXTS-1 和 comp = 0…1 被设置为 Default_Mv_Sign_Cdf 的副本
- MvBitCdf[ i ][ comp ] 对于 i = 0…MV_CONTEXTS-1 和 comp = 0…1 被设置为 Default_Mv_Bit_Cdf 的副本
- MvHpCdf[ i ][ comp ] 对于 i = 0…MV_CONTEXTS-1 和 comp = 0…1 被设置为 Default_Mv_Hp_Cdf 的副本
- PaletteYModeCdf 被设置为 Default_Palette_Y_Mode_Cdf 的副本
- PaletteUVModeCdf 被设置为 Default_Palette_Uv_Mode_Cdf 的副本
- PaletteYSizeCdf 被设置为 Default_Palette_Y_Size_Cdf 的副本
- PaletteUVSizeCdf 被设置为 Default_Palette_Uv_Size_Cdf 的副本
- PaletteSize2YColorCdf 被设置为 Default_Palette_Size_2_Y_Color_Cdf 的副本
- PaletteSize2UVColorCdf 被设置为 Default_Palette_Size_2_Uv_Color_Cdf 的副本
- PaletteSize3YColorCdf 被设置为 Default_Palette_Size_3_Y_Color_Cdf 的副本
- PaletteSize3UVColorCdf 被设置为 Default_Palette_Size_3_Uv_Color_Cdf 的副本
- PaletteSize4YColorCdf 被设置为 Default_Palette_Size_4_Y_Color_Cdf 的副本
- PaletteSize4UVColorCdf 被设置为 Default_Palette_Size_4_Uv_Color_Cdf 的副本
- PaletteSize5YColorCdf 被设置为 Default_Palette_Size_5_Y_Color_Cdf 的副本
- PaletteSize5UVColorCdf 被设置为 Default_Palette_Size_5_Uv_Color_Cdf 的副本
- PaletteSize6YColorCdf 被设置为 Default_Palette_Size_6_Y_Color_Cdf 的副本
- PaletteSize6UVColorCdf 被设置为 Default_Palette_Size_6_Uv_Color_Cdf 的副本
- PaletteSize7YColorCdf 被设置为 Default_Palette_Size_7_Y_Color_Cdf 的副本
- PaletteSize7UVColorCdf 被设置为 Default_Palette_Size_7_Uv_Color_Cdf 的副本
- PaletteSize8YColorCdf 被设置为 Default_Palette_Size_8_Y_Color_Cdf 的副本
- PaletteSize8UVColorCdf 被设置为 Default_Palette_Size_8_Uv_Color_Cdf 的副本
- DeltaQCdf 被设置为 Default_Delta_Q_Cdf 的副本
- DeltaLFCdf 被设置为 Default_Delta_Lf_Cdf 的副本
- DeltaLFMultiCdf[ i ] 对于 i = 0…FRAME_LF_COUNT-1 被设置为 Default_Delta_Lf_Cdf 的副本
- IntraTxTypeSet1Cdf 被设置为 Default_Intra_Tx_Type_Set1_Cdf 的副本
- IntraTxTypeSet2Cdf 被设置为 Default_Intra_Tx_Type_Set2_Cdf 的副本
- InterTxTypeSet1Cdf 被设置为 Default_Inter_Tx_Type_Set1_Cdf 的副本
- InterTxTypeSet2Cdf 被设置为 Default_Inter_Tx_Type_Set2_Cdf 的副本
- InterTxTypeSet3Cdf 被设置为 Default_Inter_Tx_Type_Set3_Cdf 的副本
- UseObmcCdf 被设置为Default_Use_Obmc_Cdf的副本
- InterIntraCdf 被设置为 Default_Inter_Intra_Cdf 的副本
- CompRefTypeCdf 被设置为 Default_Comp_Ref_Type_Cdf 的副本
- CflSignCdf 被设置为 Default_Cfl_Sign_Cdf 的副本
- UniCompRefCdf 被设置为 Default_Uni_Comp_Ref_Cdf 的副本
- WedgeInterIntraCdf 被设置为 Default_Wedge_Inter_Intra_Cdf 的副本
- CompGroupIdxCdf 被设置为 Default_Comp_Group_Idx_Cdf 的副本
- CompoundIdxCdf 被设置为 Default_Compound_Idx_Cdf 的副本
- CompoundTypeCdf 被设置为 Default_Compound_Type_Cdf 的副本
- InterIntraModeCdf 被设置为 Default_Inter_Intra_Mode_Cdf 的副本
- WedgeIndexCdf 被设置为 Default_Wedge_Index_Cdf 的副本
- CflAlphaCdf 被设置为 Default_Cfl_Alpha_Cdf 的副本
- UseWienerCdf 被设置为 Default_Use_Wiener_Cdf 的副本
- UseSgrprojCdf 被设置为 Default_Use_Sgrproj_Cdf 的副本
- RestorationTypeCdf 被设置为 Default_Restoration_Type_Cdf 的副本
-
init_coeff_cdfs() 是一个函数调用,它指示应该初始化在 coeff() 语法结构中使用的 CDF(累积分布函数)表。当这个函数被调用时,以下步骤适用:
- 变量 idx 的确定方法如下:
- 如果 base_q_idx 小于或等于 20,idx 被设置为 0。
- 否则,如果 base_q_idx 小于或等于 60,idx 被设置为 1。
- 否则,如果 base_q_idx 小于或等于 120,idx 被设置为 2。
- 否则,idx 被设置为 3。
- 累积分布函数数组被重置为默认值,如下所示:
- TxbSkipCdf 被设置为 Default_Txb_Skip_Cdf[idx] 的副本。
- EobPt16Cdf 被设置为 Default_Eob_Pt_16_Cdf[idx] 的副本。
- EobPt32Cdf 被设置为 Default_Eob_Pt_32_Cdf[idx] 的副本。
- EobPt64Cdf 被设置为 Default_Eob_Pt_64_Cdf[idx] 的副本。
- EobPt128Cdf 被设置为 Default_Eob_Pt_128_Cdf[idx] 的副本。
- EobPt256Cdf 被设置为 Default_Eob_Pt_256_Cdf[idx] 的副本。
- EobPt512Cdf 被设置为 Default_Eob_Pt_512_Cdf[idx] 的副本。
- EobPt1024Cdf 被设置为 Default_Eob_Pt_1024_Cdf[idx] 的副本。
- EobExtraCdf 被设置为 Default_Eob_Extra_Cdf[idx] 的副本。
- DcSignCdf 被设置为 Default_Dc_Sign_Cdf[idx] 的副本。
- CoeffBaseEobCdf 被设置为 Default_Coeff_Base_Eob_Cdf[idx] 的副本。
- CoeffBaseCdf 被设置为 Default_Coeff_Base_Cdf[idx] 的副本。
- CoeffBrCdf 被设置为 Default_Coeff_Br_Cdf[idx] 的副本。
- 变量 idx 的确定方法如下:
-
load_cdfs(ctx) 是一个函数调用,它指示从帧上下文编号 ctx(范围从 0 到 NUM_REF_FRAMES - 1)加载 CDF 表。当调用这个函数时,会从由 ctx 索引的内存区域复制 init_coeff_cdfs 和 init_non_coeff_cdfs 语义中提到的每个 CDF 数组。(这些帧上下文的内存内容已通过先前对 save_cdfs 的调用进行了初始化)。一旦 CDF 数组被加载,每个数组中的最后一个条目(代表该上下文的符号计数)被设置为 0。
-
load_previous() 是一个函数调用,它指示可能从先前的帧加载信息以用于解码当前帧。当调用这个函数时,以下有序步骤适用:
- 变量 prevFrame 被设置为等于 ref_frame_idx[primary_ref_frame]。
- PrevGmParams 被设置为等于 SavedGmParams[prevFrame]。
- 调用第 7.21 节中指定的 load_loop_filter_params(prevFrame) 函数。
- 调用第 7.21 节中指定的 load_segmentation_params(prevFrame) 函数。
-
load_previous_segment_ids() 是一个函数调用,它指示可能从先前的帧加载一个段落图(segment map)以用于解码当前帧。当调用这个函数时,PrevSegmentIds 中包含的段落图设置如下:
-
变量 prevFrame 被设置为等于 ref_frame_idx[primary_ref_frame]。
-
如果 segmentation_enabled 等于 1,并且 RefMiCols[prevFrame] 等于 MiCols,RefMiRows[prevFrame] 等于 MiRows,则对于 row = 0…MiRows-1 和 col = 0…MiCols-1,PrevSegmentIds[row][col] 被设置为等于 SavedSegmentIds[prevFrame][row][col]。否则,对于 row = 0…MiRows-1 和 col = 0…MiCols-1,PrevSegmentIds[row][col] 被设置为 0。