D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION 结构 (d3d12video.h)

将引用图片中的更改描述为内存操作,作为操作标识符和操作所需的关联参数的元组。

语法

typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION {
  UCHAR memory_management_control_operation;
  UINT  difference_of_pic_nums_minus1;
  UINT  long_term_pic_num;
  UINT  long_term_frame_idx;
  UINT  max_long_term_frame_idx_plus1;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;

成员

memory_management_control_operation

要应用于影响引用图片标记状态的控制操作。

difference_of_pic_nums_minus1

memory_management_control_operation 等于 3 或 1 一起使用,可将长期帧索引分配给短期参考图片或将短期参考图片标记为“未使用以供参考”。

long_term_pic_num

memory_management_control_operation 等于 2 一起使用,将长期参考图片标记为“未使用以供参考”。

long_term_frame_idx

与等于 3 或 6 的memory_management_control_operation 一起使用,以便为图片分配长期帧索引。

max_long_term_frame_idx_plus1

值减 1 指定在收到另一个值(max_long_term_frame_idx_plus1) )之前,允许长期参考图片 (的长期帧索引的最大值。

备注

有关详细信息,请参阅 H264 规范了解更多详细信息:第 8.2.5.4 节“自适应内存控制解码的参考图片标记过程”。

变量 MaxLongTermFrameIdx 派生如下:

– 如果 max_long_term_frame_idx_plus1 等于 0,则 MaxLongTermFrameIdx 设置为“无长期帧索引”。 – 否则, (max_long_term_frame_idx_plus1 大于 0) , MaxLongTermFrameIdx 设置为等于 max_long_term_frame_idx_plus1 • 1。

将当前帧标记为短期引用的操作由 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS 结构中的标志提供,其对应的 PictureOrderCountNumberFrameDecodingOrderNumber 值在关联的图片控件结构中指示。

变量 max_num_ref_frames 在此 API 中由报告的最大 DPB 容量指示。

请注意,为了将一个IDR帧标记为长期引用,建议的显式机制是先将它标记为短期引用,方法是在调用DID时设置D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE,然后使用内存管理操作“3”将其提升为长期参考帧,将短期参考图片标记为“用于长期引用”,并将长期帧索引分配给它。

或者,如果编码一个IDR帧并将 adaptive_ref_pic_marking_mode_flag 设置为 1,则驱动程序将假定客户端正在尝试 long_term_reference_flag 设置 H264 切片标头,并在 EncodeFrame 调用的输出位流中执行此操作。

要求

   
最低受支持的客户端 Windows 内部版本 22000
最低受支持的服务器 Windows 内部版本 22000
标头 d3d12video.h