D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION-Struktur (d3d12video.h)

Beschreibt Änderungen in den Referenzbildern als Speichervorgänge als Tupel eines Vorgangsbezeichners und zugeordneter Parameter, die für den Vorgang erforderlich sind.

Syntax

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;

Member

memory_management_control_operation

Der Steuerelementvorgang, der angewendet werden soll, um den Markierungszustand des Referenzbilds zu beeinflussen.

difference_of_pic_nums_minus1

Wird mit memory_management_control_operation gleich 3 oder 1 verwendet, um einem kurzfristigen Referenzbild einen langfristigen Frameindex zuzuweisen oder ein kurzfristiges Referenzbild als "nicht verwendet" zu markieren.

long_term_pic_num

Wird mit memory_management_control_operation gleich 2, um ein Langfristiges Referenzbild als "nicht verwendet" zu markieren.

long_term_frame_idx

Wird mit memory_management_control_operation gleich 3 oder 6 verwendet, um einem Bild einen langfristigen Frameindex zuzuweisen.

max_long_term_frame_idx_plus1

Der Wert minus 1 gibt den maximalen Wert des langfristigen Frameindex an, der für Langzeitreferenzbilder zulässig ist (bis zum Empfang eines anderen Werts von max_long_term_frame_idx_plus1).

Hinweise

Weitere Informationen finden Sie in der H264-Spezifikation: Abschnitt 8.2.5.4 "Adaptive Memory Control decoded reference picture marking process".

Die Variable MaxLongTermFrameIdx wird wie folgt abgeleitet:

– Wenn max_long_term_frame_idx_plus1 gleich 0 ist, wird MaxLongTermFrameIdx gleich "keine langfristigen Frameindizes" festgelegt. – Andernfalls (max_long_term_frame_idx_plus1 ist größer als 0) wird MaxLongTermFrameIdx gleich max_long_term_frame_idx_plus1 − 1 festgelegt.

Der Vorgang, den aktuellen Frame als kurzfristigen Verweis zu markieren, wird durch ein Flag in der D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS-Struktur mit den entsprechenden PictureOrderCountNumber - und FrameDecodingOrderNumber-Werten gegeben, die in der zugeordneten Bildsteuerelementstruktur angegeben sind.

Die Variable max_num_ref_frames wird in dieser API durch die gemeldete maximale DPB-Kapazität angegeben.

Beachten Sie, dass der vorgeschlagene explizite Mechanismus zum Markieren eines IDR-Frames als langfristige Referenz zuerst als kurzfristige Referenz gekennzeichnet wird, indem D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE beim Aufrufen von EncodeFrame für den IDR-Frame festgelegt und später mithilfe des Speicherverwaltungsvorgangs "3" zu einem langfristigen Referenzrahmen herstreckt wird, um ein kurzfristiges Referenzbild als "für langfristige Referenz" zu markieren und einen langfristigen Frameindex zuzuweisen. Es.

Wenn sie einen IDR-Frame codieren und adaptive_ref_pic_marking_mode_flag = 1 festlegen, geht der Treiber alternativ davon aus, dass der Client versucht, den H264-Sliceheader long_term_reference_flag festzulegen, und dies im Ausgabebitstream für den EncodeFrame-Aufruf .

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Build 22000
Unterstützte Mindestversion (Server) Windows Build 22000
Kopfzeile d3d12video.h