Teilen über


D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC Struktur (d3d12video.h)

Stellt die Steuerelemente auf Bildebene für den zugeordneten EncodeFrame- Befehl für die HEVC-Codierung dar.

Syntax

typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC {
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
  D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC                       FrameType;
  UINT                                                      slice_pic_parameter_set_id;
  UINT                                                      PictureOrderCountNumber;
  UINT                                                      TemporalLayerIndex;
  UINT                                                      List0ReferenceFramesCount;
  UINT                                                      *pList0ReferenceFrames;
  UINT                                                      List1ReferenceFramesCount;
  UINT                                                      *pList1ReferenceFrames;
  UINT                                                      ReferenceFramesReconPictureDescriptorsCount;
  D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC     *pReferenceFramesReconPictureDescriptors;
  UINT                                                      List0RefPicModificationsCount;
  UINT                                                      *pList0RefPicModifications;
  UINT                                                      List1RefPicModificationsCount;
  UINT                                                      *pList1RefPicModifications;
  UINT                                                      QPMapValuesCount;
  INT8                                                      *pRateControlQPMap;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;

Angehörige

Flags

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

FrameType

Ein Wert aus der D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC Enumeration, der den Bildtyp angibt. Stellen Sie sicher, dass die codecspezifischen Flags den angegebenen Typ unterstützen. Diese Auswahl muss mit der vom Host festgelegten GOP-Strukturkonfiguration synchronisiert werden. Beachten Sie, dass die GOP in der Anzeigereihenfolge definiert ist und diese Bildtypauswahl dem GOP folgen muss, aber in codierter Reihenfolge.

slice_pic_parameter_set_id

Ein UINT-, der den wert angibt, der in den Segmentüberschriften des aktuellen Frames verwendet werden soll, um auf die PPS zu verweisen.

PictureOrderCountNumber

Ein UINT- die aktuelle Frameanzeigereihenfolge angibt.

TemporalLayerIndex

Eine UINT- angeben die Bildschichtnummer in der zeitlichen Hierarchie. Überprüfen Sie die maximale Anzahl von Ebenen in D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

List0ReferenceFramesCount

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

pList0ReferenceFrames

Ein Zeiger auf ein UINT- Array, das die Liste der vergangenen Frameverweisframes angibt, die für diesen Frame verwendet werden sollen. Jeder ganzzahlige Wert in diesem Arrayindizes in pReferenceFramesReconPictureDescriptors, um auf im DPB gespeicherte Bilder zu verweisen.

List1ReferenceFramesCount

Ein UINT- 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_HEVCverfügbar gemacht wurde.

pList1ReferenceFrames

Ein Zeiger auf ein UINT- Array, das die Liste der zukünftigen Frameverweisframes angibt, die für diesen Frame verwendet werden sollen. Jeder ganzzahlige Wert in diesem Arrayindizes in pReferenceFramesReconPictureDescriptors, um auf im DPB gespeicherte Bilder zu verweisen.

ReferenceFramesReconPictureDescriptorsCount

Ein UINT- die Anzahl der Einträge in pReferenceFramesReconPictureDescriptorsangeben.

pReferenceFramesReconPictureDescriptors

Ein Zeiger auf ein UINT- Array, das den aktuellen Zustand des DPB-Puffers beschreibt, der in D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC gespeichert ist. ReferenceFrames. Die pList0ReferenceFrames und pList1ReferenceFrames listet die Indizes aus früheren/zukünftigen Verweisen in dieses Deskriptorsarray auf.

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

Die Größe dieses Arrays entspricht immer D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames.NumTextures für den zugeordneten befehl EncodeFrame.

List0RefPicModificationsCount

Ein UINT- die Anzahl der Elemente in pList0RefPicModificationsangibt.

pList0RefPicModifications

Ein Zeiger auf ein UINT Array mit Änderungsbefehlen für die L0-Liste.

List1RefPicModificationsCount

Ein UINT- die Anzahl der Elemente in pList1RefPicModificationsangibt.

pList1RefPicModifications

Ein Zeiger auf ein UINT- Array mit Änderungsbefehlen für die L1-Liste.

QPMapValuesCount

Ein UINT- die Anzahl der Elemente angibt, die in pRateControlQPMap-vorhanden sind. Dies sollte mit der Anzahl der Codierungsblöcke im Frame übereinstimmen, wobei die Frameauflösung auf die am nächsten ausgerichteten Werte aufgerundet wird.

pRateControlQPMap

Ein Zeiger auf ein Array von Int8 enthält, in der Zeilen-/Spaltenscanreihenfolge die QP-Kartenwerte, die für jeden quadratischen Bereich für diesen Frame verwendet werden sollen. Die QP-Kartenabmessungen können mit der aktuellen Auflösung und D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS berechnet werden. QPMapRegionPixelsSize vermitteln die Quadratbereichsgrößen.

Bemerkungen

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

Level_idc-Zuordnungen für HEVC

D3D12-Ebene General_level_idc erwartet Notizen
D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 30 Nichts
D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 60 Nichts
D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 63 Nichts
D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 90 Nichts
D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 93 Nichts
D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 120 Nichts
D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 123 Nichts
D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 150 Nichts
D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 153 Nichts
D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 156 Nichts
D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 180 Nichts
D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 183 Nichts
D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 186 Nichts

HEVC Video Parameter Set erwartete Werte

Syntaxelement Standardwert erwartet Notizen
vps_video_parameter_set_id Benutzerspezifisch Nichts
vps_base_layer_internal_flag 0 Nichts
vps_base_layer_available_flag 0 Nichts
vps_max_layers_minus1 0 Nichts
vps_max_sub_layers_minus1 0 Nichts
vps_temporal_id_nesting_flag 1 Nichts
vps_reserved_ffff_16bits 0xFFFF Nichts
general_profile_space 0 Nichts
general_tier_flag 1 für "Hohe Ebene", "0" für die Hauptebene Nichts
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC Enumerationswert + 1 Nichts
general_profile_compatibility_flag[general_profile_space] 1 Nichts
general_progressive_source_flag 1 Nichts
general_interlaced_source_flag 0 Nichts
general_non_packed_constraint_flag 1 Nichts
general_frame_only_constraint_flag 1 Nichts
general_reserved_zero_44bits 44 Bit Nullen Nichts
general_level_idc Siehe Tabelle oben Nichts
vps_sub_layer_ordering_info_present_flag 0 Nichts
vps_max_dec_pic_buffering_minus1[0] (MaxReferenceFramesInDPB/vorherigen Referenzframes/ + 1 /zusätzlichen aktuellen Frame-Recon Pic/) - 1/*minus1 für Header/; Nichts
vps_max_num_reorder_pics[0] 0, wenn keine B-Frames. andernfalls vps_max_dec_pic_buffering_minus1. Nichts
vps_max_latency_increase_plus1[0] 1 Nichts
vps_max_layer_id 0 Nichts
vps_num_layer_sets_minus1 0 Nichts
vps_timing_info_present_flag 0 Nichts
vps_extension_flag 0 Nichts

HEVC Sequence Parameter Set erwartete Werte

Syntaxelement Standardwert erwartet Notizen
sps_video_parameter_set_id Benutzerspezifisch Nichts
sps_max_sub_layers_minus1 Identisch mit den zugehörigen VPS Nichts
sps_temporal_id_nesting_flag Identisch mit den zugehörigen VPS Nichts
general_profile_space 0 Nichts
general_tier_flag 1 für "Hohe Ebene", "0" für die Hauptebene Nichts
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC Enumerationswert + 1 Nichts
general_profile_compatibility_flag[general_profile_space] 1 Nichts
general_progressive_source_flag 1 Nichts
general_interlaced_source_flag 0 Nichts
general_non_packed_constraint_flag 1 Nichts
general_frame_only_constraint_flag 1 Nichts
general_reserved_zero_44bits 44 Bit Nullen Nichts
general_level_idc Siehe Tabelle oben Nichts
chroma_format_idc 1 4.2.0 für NV12 und P010
pic_width_in_luma_samples std::ceil(sequenceTargetResolution.Width / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize Verwenden Sie die aktuelle Frameauflösung für D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. SubregionBlockPixelsSize
pic_height_in_luma_samples std::ceil(sequenceTargetResolution.Height / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize Verwenden Sie die aktuelle Frameauflösung für D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. SubregionBlockPixelsSize
conformance_window_flag 0, wenn die Auflösung an SubregionBlockPixelsSize ausgerichtet ist, andernfalls 1 Nichts
conf_win_left_offset 0 Nur, wenn conformance_windows_flag = 1
conf_win_right_offset (sps.pic_width_in_luma_samples - encodeResolution.Width) >> 1 Nur, wenn conformance_windows_flag = 1
conf_win_top_offset 0 Nur, wenn conformance_windows_flag = 1
conf_win_bottom_offset (sps.pic_height_in_luma_samples - encodeResolution.Height) >> 1 Nur, wenn conformance_windows_flag = 1
bit_depth_luma_minus8 0 für NV12, 2 für P010 Nichts
bit_depth_luma_minus8 0 für NV12, 2 für P010 Nichts
log2_max_pic_order_cnt_lsb_minus4 Basierend auf D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC Nichts
sps_sub_layer_ordering_info_present_flag Identisch mit den zugehörigen VPS Nichts
sps_max_dec_pic_buffering_minus1 Identisch mit den zugehörigen VPS Nichts
sps_max_num_reorder_pics Identisch mit den zugehörigen VPS Nichts
sps_max_latency_increase_plus1 Identisch mit den zugehörigen VPS Nichts
log2_min_luma_coding_block_size_minus3 std::log2(minCuSize) - 3) Beispiel: MinCUSize=8 für D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8
log2_diff_max_min_luma_coding_block_size std::log2(maxCuSize) - std::log2(minCuSize)) Beispiel: MaxCUSize=16 für D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16
log2_min_transform_block_size_minus2 std::log2(minTuSize) - 2) Beispiel: MinTuSize=4 für D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4
log2_diff_max_min_transform_block_size std::log2(maxTuSize) - std::log2(minTuSize)) Beispiel: MaxTuSize=16 für D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16
max_transform_hierarchy_depth_inter Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC Nichts
max_transform_hierarchy_depth_inter Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC Nichts
scaling_list_enabled_flag 0 Nichts
amp_enabled_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION Nichts
sample_adaptive_offset_enabled_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER Nichts
pcm_enabled_flag 0 Nichts
num_short_term_ref_pic_sets 0 Nichts
long_term_ref_pics_present_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES Nichts
num_long_term_ref_pics_sps 0 Nichts
sps_temporal_mvp_enabled_flag 0 Nichts
strong_intra_smoothing_enabled_flag 0 Nichts
vui_parameters_present_flag 0 Nichts
sps_extension_flag 0 Nichts

HEVC Picture Parameter Set erwartete Werte

Syntaxelement Standardwert erwartet Notizen
pps_pic_parameter_set_id Benutzerspezifisch Nichts
pps_seq_parameter_set_id Benutzerspezifisch Nichts
dependent_slice_segments_enabled_flag 0 Nichts
output_flag_present_flag 0 Nichts
num_extra_slice_header_bits 0 Nichts
sign_data_hiding_enabled_flag 0 Nichts
cabac_init_present_flag 1 Nichts
num_ref_idx_lx_default_active_minus1[0] std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0)) Nichts
num_ref_idx_lx_default_active_minus1[1] std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0)) Nichts
init_qp_minus26 0 Nichts
constrained_intra_pred_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION Nichts
transform_skip_enabled_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING Nichts
cu_qp_delta_enabled_flag 1 Nichts
diff_cu_qp_delta_depth 0 Nichts
pps_cb_qp_offset 0 Nichts
pps_cr_qp_offset 0 Nichts
pps_slice_chroma_qp_offsets_present_flag 1 Nichts
weighted_pred_flag 0 Keine Unterstützung für gewichtete Vorhersage in der API
weighted_bipred_flag 0 Keine Unterstützung für gewichtete Vorhersage in der API
transquant_bypass_enabled_flag 0 Nichts
tiles_enabled_flag 0 Nichts
entropy_coding_sync_enabled_flag 0 Nichts
pps_loop_filter_across_slices_enabled_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES Nichts
deblocking_filter_control_present_flag 1 Nichts
deblocking_filter_override_enabled_flag 0 Nichts
pps_deblocking_filter_disabled_flag 0 Nichts
pps_beta_offset_div2 0 Nichts
pps_tc_offset_div2 0 Nichts
pps_scaling_list_data_present_flag 0 Nichts
lists_modification_present_flag 1, wenn änderungen D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC Listen gesendet werden. Andernfalls als 0 festgelegt. Nichts
log2_parallel_merge_level_minus2 0 Nichts
slice_segment_header_extension_present_flag 0 Nichts
pps_extension_flag 0 Nichts

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Build 22000
mindestens unterstützte Server- Windows Build 22000
Header- d3d12video.h