Share via


D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264-Struktur (d3d12video.h)

Stellt die Steuerelementelemente auf Bildebene für den zugeordneten EncodeFrame-Befehl für die H.264-Codierung dar.

Syntax

typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 {
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS                                         Flags;
  D3D12_VIDEO_ENCODER_FRAME_TYPE_H264                                                               FrameType;
  UINT                                                                                              pic_parameter_set_id;
  UINT                                                                                              idr_pic_id;
  UINT                                                                                              PictureOrderCountNumber;
  UINT                                                                                              FrameDecodingOrderNumber;
  UINT                                                                                              TemporalLayerIndex;
  UINT                                                                                              List0ReferenceFramesCount;
  UINT                                                                                              *pList0ReferenceFrames;
  UINT                                                                                              List1ReferenceFramesCount;
  UINT                                                                                              *pList1ReferenceFrames;
  UINT                                                                                              ReferenceFramesReconPictureDescriptorsCount;
  D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264                                             *pReferenceFramesReconPictureDescriptors;
  UCHAR                                                                                             adaptive_ref_pic_marking_mode_flag;
  UINT                                                                                              RefPicMarkingOperationsCommandsCount;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION           *pRefPicMarkingOperationsCommands;
  UINT                                                                                              List0RefPicModificationsCount;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
  UINT                                                                                              List1RefPicModificationsCount;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
  UINT                                                                                              QPMapValuesCount;
  INT8                                                                                              *pRateControlQPMap;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;

Member

Flags

Eine bitweise OR-Kombination von Werten aus der D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Enumeration, die Konfigurationsflags für den zu codierenden Frame angibt.

FrameType

Ein Wert aus der D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 Enumeration, die den Bildtyp angibt. Stellen Sie sicher, dass die Codec-spezifischen Flags den angegebenen Typ unterstützen. Diese Auswahl muss mit der vom Host festgelegten GOP-Strukturkonfiguration synchronisiert werden. Beachten Sie, dass das GOP in der Anzeigereihenfolge definiert ist und diese Auswahl des Bildtyps dem GOP folgen muss, jedoch in Codierungsreihenfolge.

pic_parameter_set_id

Ein UINT , der den Wert angibt, der in den Sliceheadern des aktuellen Frames verwendet werden soll, um auf das PPS zu verweisen.

idr_pic_id

Wenn FrameType** D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME ist, gibt ein UINT den Bezeichner des IDR-Frames an, der in allen im Frame vorhandenen Slices-Headern verwendet werden soll.

PictureOrderCountNumber

Ein UINT , der die aktuelle Frameanzeigereihenfolge angibt.

FrameDecodingOrderNumber

Ein UINT , der die Framedecodierungsreihenfolge mit Semantik angibt, wie durch den Sliceheader frame_num Syntaxelement angegeben, das nach jedem Referenzbild inkrementiert wird.

TemporalLayerIndex

Ein UINT , der die Anzahl der Bildebenen in der temporalen Hierarchie angibt. Überprüfen Sie die maximale Anzahl von Ebenen in D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.

List0ReferenceFramesCount

Ein UINT , der die Anzahl vergangener Frameverweise angibt, die für diesen Frame verwendet werden sollen. Dieser Wert sollte mit dem übereinstimmen, was in D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 verfügbar gemacht wurde.

pList0ReferenceFrames

Ein Zeiger auf ein UINT-Array , das die Liste der bisherigen Frameverweisframes angibt, die für diesen Frame verwendet werden sollen. Jeder ganzzahlige Wert in diesem Array indizes in pReferenceFramesReconPictureDescriptors , um auf bilder zu verweisen, die im DPB gespeichert sind.

List1ReferenceFramesCount

Ein UINT , der die Anzahl zukünftiger Frameverweise angibt, die für diesen Frame verwendet werden sollen. Dieser Wert sollte mit dem übereinstimmen, was in D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 verfügbar gemacht wurde.

pList1ReferenceFrames

Ein Zeiger auf ein UINT-Array , das die Liste der zukünftigen Frame-Referenzframes angibt, die für diesen Frame verwendet werden sollen. Jeder ganzzahlige Wert in diesem Array indizes in pReferenceFramesReconPictureDescriptors , um auf bilder zu verweisen, die im DPB gespeichert sind.

ReferenceFramesReconPictureDescriptorsCount

Ein UINT , der die Anzahl der Einträge in pReferenceFramesReconPictureDescriptors angibt.

pReferenceFramesReconPictureDescriptors

Ein Zeiger auf ein UINT-Array , das den aktuellen Zustand des DPB-Puffers beschreibt, der in D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames. Die Listenindizes pList0ReferenceFrames und pList1ReferenceFrames werden aus vergangenen/zukünftigen Verweisen in diesem Deskriptorenarray zugeordnet.

Dieses Array von Deskriptoren ordnet wiederum ein Referenzbild für diesen Frame einem Ressourcenindex im Array für rekonstruierte Bilder D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC zu. ReferenceFrames. Darüber hinaus gibt es für jedes Referenzbild die Codierungs- und Anzeigereihennummer an und gibt an, ob es sich um einen langfristigen Verweis handelt.

Die Größe dieses Arrays entspricht immer D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames.NumTextures für den zugeordnetenEncodeFrame-Befehl .

adaptive_ref_pic_marking_mode_flag

Eine UCHAR , die einen semantischen Modus für die Frameverweisbehandlung definiert.

adaptive_ref_pic_marking_mode_flag Wert Referenzbildmarkierungsmodus angegeben
0 1
Gleitender Fensterreferenz-Bildmarkierungsmodus: Ein Markierungsmodus, der einen First-In-First-Out-Mechanismus für kurzfristige Referenzbilder bereitstellt. Adaptiver Referenzbildmarkierungsmodus: Ein Referenzbildmarkierungsmodus, der Syntaxelemente bereitstellt, um die Markierung von Referenzbildern als "nicht zur Referenz" anzugeben und langfristige Frameindizes zuzuweisen.

RefPicMarkingOperationsCommandsCount

Ein UINT , der die Anzahl der Dem aktuellen Frame zugeordneten Markierungsvorgänge für Verweisbilder angibt. Erfordert, dass adaptive_ref_pic_marking_mode_flag auf 1 festgelegt ist.

pRefPicMarkingOperationsCommands

Ein Zeiger auf ein Array von D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION Strukturen, die die Liste der Mit dem aktuellen Frame zugeordneten Verweisbildermarkierungsvorgänge darstellen. Die in dieser Liste beschriebenen Vorgänge müssen während der Codierungssitzung entsprechend in den DPB-Deskriptoren angezeigt werden.

List0RefPicModificationsCount

Ein UINT , der die Anzahl der Elemente in pList0RefPicModifications angibt.

pList0RefPicModifications

Ein Zeiger auf ein Array von D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION Strukturen, die die Liste der Änderungsvorgänge für die Referenzbildliste für die Liste pList0ReferenceFrames darstellen.

List1RefPicModificationsCount

Ein UINT , der die Anzahl der Elemente in pList1RefPicModifications angibt.

pList1RefPicModifications

Ein Zeiger auf ein Array von D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION Strukturen, die die Liste der Änderungsvorgänge für die Referenzbildliste für die Liste pList1ReferenceFrames darstellen.

QPMapValuesCount

Ein UINT , der die Anzahl der in pRateControlQPMap vorhandenen Elemente angibt. Dies sollte der Anzahl der Codierungsblöcke im Frame entsprechen, wodurch die Frameauflösung auf die am nächsten ausgerichteten Werte aufgerundet wird.

pRateControlQPMap

Ein Zeiger auf ein Array von Int8 , das in der Reihenfolge der Zeilen-/Spaltenüberprüfung die QP-Zuordnungswerte enthält, die für jeden quadratischen Bereich für diesen Frame verwendet werden sollen. Die QP-Kartendimensionen können mit der aktuellen Auflösung und D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS berechnet werden . QPMapRegionPixelsSize vermittelt die quadratischen Regionsgrößen.

Hinweise

Beachten Sie, dass die Ausgabe, wenn der aktuelle Frame als Referenzbild markiert ist, das rekonstruierte Bild zusammen mit dem Bitstrom enthalten muss, damit der Host es in zukünftigen Befehlen in der Referenzliste für rekonstruierte Bilder platzieren kann. Beachten Sie, dass es möglicherweise Einschränkungen für einige Frametypen gibt, die als Verweise gekennzeichnet werden sollen. Überprüfen Sie die Featureunterstützung, bevor Sie diese Werte festlegen.

In den folgenden Tabellen sind die erwarteten SPS- und PPS-Werte für die H264-Codierung aufgeführt.

Level_idc Zuordnungen für H264

D3D12-Ebene Erwartete level_idc Notizen
D3D12_VIDEO_ENCODER_LEVELS_H264_1 10 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_1b 11 SPS.constraint_set3 muss 1 sein
D3D12_VIDEO_ENCODER_LEVELS_H264_11 11 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_12 12 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_13 13 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_2 20 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_21 21 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_22 22 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_3 30 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_31 31 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_32 32 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_4 40 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_41 41 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_42 42 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_5 50 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_51 51 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_52 52 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_6 60 Keiner
D3D12_VIDEO_ENCODER_LEVELS_H264_61 61 Keine
D3D12_VIDEO_ENCODER_LEVELS_H264_62 62 Keine

H264 Sequence Parameter Set expected values

Syntaxelement Erwarteter Standardwert Notizen
profile_idc Enumerationswert H264_PROFILE_MAIN/H264_PROFILE_HIGH/H264_PROFILE_HIGH10 Keine
constraint_set0_flag 0 Keine
constraint_set1_flag 0 Keine
constraint_set2_flag 0 Keine
constraint_set3_flag 0 1 bei Verwendung von D3D12_VIDEO_ENCODER_LEVELS_H264_1b
constraint_set4_flag 0 Keine
constraint_set5_flag 0 Keine
reserved_zero_2bits 0 Keine
level_idc Siehe Tabelle oben für H264-Ebenen Keine
seq_parameter_set_id Benutzerspezifisch Keine
chroma_format_idc 1 Nur für die Verwendung mit den Formaten P010 oder NV12 YUV 4.2.0
bit_depth_luma_minus8 0 für NV12, 2 für P010 Keine
qpprime_y_zero_transform_bypass_flag 0 Keine
seq_scaling_matrix_present_flag 0 Keine
log2_max_frame_num_minus4 Identisch mit D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 Keine
pic_order_cnt_type Identisch mit D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 Nur Die Modi 0 und 2 werden in dieser API unterstützt.
log2_max_pic_order_cnt_lsb_minus4 Identisch mit D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 Nur, wenn pic_order_cnt_type == 0
max_num_ref_frames Maximale Anzahl von Referenzbildern, die in der Codierungssitzung verwendet werden Keine
gaps_in_frame_num_value_allowed_flag 0 Keine
pic_width_in_mbs_minus1 std::ceil(sequenceTargetResolution.Width / 16.0)) - 1; Keine
pic_height_in_map_units_minus1 std::ceil(sequenceTargetResolution.Height / 16.0)) - 1; Keine
frame_mbs_only_flag 0 Keine Interlaceunterstützung
direct_8x8_inference_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM Keine
frame_cropping_flag 0 oder 1, je nachdem, ob die Codierungsauflösung 16 ausgerichtet ist oder nicht Keine
frame_cropping_rect_left_offset 0 Nur wenn frame_cropping_flag = 1
frame_cropping_rect_right_offset ((pic_width_in_mbs_minus1+1) * 16 - sequenceTargetResolution.Width) / 2 Nur, wenn frame_cropping_flag = 1
frame_cropping_rect_top_offset ((pic_height_in_map_units_minus1+1) * 16 - sequenceTargetResolution.Height) / 2 Nur, wenn frame_cropping_flag = 1
frame_cropping_rect_bottom_offset 0 Nur, wenn frame_cropping_flag = 1
vui_paramenters_present_flag 0 Keine

H264 Picture Parameter Set expected values (H264 Picture Parameter Set expected values)

Syntax-Element Erwarteter Standardwert Notizen
pic_parameter_set_id Benutzerspezifisch Keine
seq_parameter_set_id Benutzerspezifisch Keine
entropy_coding_mode_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING Keine
pic_order_present_flag 0 Nur Unterstützung für pic_cnt_type = 0, 2
num_slice_groups_minus1 0 Keine
num_ref_idx_l1_active_minus1 std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0) Keine
num_ref_idx_l0_active_minus1 std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0) Keine
weighted_pred_flag 0 Keine
weighted_bipred_idc 0 Keine
pic_init_qp_minus26 0 Keine
pic_init_qs_minus26 0 Keine
chroma_qp_index_offset 0 Keine
deblocking_filter_control_present_flag 1 Keine
constrained_intra_pred_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION Keine
redundant_pic_cnt_present_flag 0 Keine
transform_8x8_mode_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM Nur bei Verwendung von High-Profilen
pic_scaling_matrix_present_flag 0 Keine
second_chroma_qp_index_offset 0 Keine

Anforderungen

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