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 |
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für