Share via


D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC-Struktur (d3d12video.h)

Stellt die Steuerelementelemente 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;

Member

Flags

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

FrameType

Ein Wert aus der D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC-Enumeration , die 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 der GOP in der Anzeigereihenfolge definiert ist und diese Auswahl des Bildtyps dem GOP folgen muss, jedoch in der Codierungsreihenfolge.

slice_pic_parameter_set_id

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

PictureOrderCountNumber

Ein UINT , der die aktuelle Frameanzeigereihenfolge angibt.

TemporalLayerIndex

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

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_HEVC verfügbar gemacht wurde.

pList0ReferenceFrames

Ein Zeiger auf ein UINT-Array , das die Liste vergangener 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_HEVC verfü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 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 Listen "pList0ReferenceFrames " und "pList1ReferenceFrames " ordnen die Indizes aus vergangenen/zukünftigen Verweisen in dieses Deskriptorenarray zu.

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

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

List0RefPicModificationsCount

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

pList0RefPicModifications

Ein Zeiger auf ein UINT-Array , das Änderungsbefehle für die L0-Liste enthält.

List1RefPicModificationsCount

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

pList1RefPicModifications

Ein Zeiger auf ein UINT-Array , das Änderungsbefehle für die L1-Liste enthält.

QPMapValuesCount

Ein UINT , der die Anzahl der elemente angibt, die in pRateControlQPMap vorhanden sind. 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 mithilfe der aktuellen Auflösung und D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS berechnet werden . QPMapRegionPixelsSize , das die quadratischen Bereichsgrößen vermittelt.

Hinweise

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 Erwartete general_level_idc Notizen
D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 30 Entspricht 3 * Enumerationsstufe 2 Ziffernsuffix (10)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 60 Entspricht 3 * Enumerationsebene 2 Ziffernsuffix (20)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 63 Entspricht 3 * Enumerationsstufe 2 Ziffernsuffix (21)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 90 Entspricht 3 * Enumerationsebene 2 Ziffernsuffix (30)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 93 Entspricht 3 * Enumerationsstufe 2 Ziffernsuffix (31)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 1 20 Entspricht 3 * Enumerationsebene 2 Ziffernsuffix (40)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 1 23 Entspricht 3 * Enumerationsstufe 2 Ziffernsuffix (41)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 1 50 Entspricht 3 * Enumerationsstufe 2 Ziffernsuffix (50)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 1 53 Entspricht 3 * Enumerationsstufe 2 Ziffernsuffix (51)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 1 56 Entspricht 3 * Enumerationsstufe 2 Ziffernsuffix (52)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 1 80 Entspricht 3 * Enumerationsstufe 2 Ziffernsuffix (60)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 1 83 Entspricht 3 * Enumerationsstufe 2 Ziffernsuffix (61)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 1 86 Entspricht 3 * Enumerationsstufe 2 Ziffernsuffix (62)

HEVC Video Parameter Set expected values

Syntax-Element Erwarteter Standardwert Notizen
vps_video_parameter_set_id Benutzerspezifisch Keine
vps_base_layer_internal_flag 0 Keine
vps_base_layer_available_flag 0 Keine
vps_max_layers_minus1 0 Keine
vps_max_sub_layers_minus1 0 Keine
vps_temporal_id_nesting_flag 1 Keine
vps_reserved_ffff_16bits 0xFFFF Keine
general_profile_space 0 Keine
general_tier_flag 1 für "Hoher Tarif", "0" für "Main"-Tarif Keine
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC Enumerationswert + 1 Keine
general_profile_compatibility_flag[general_profile_space] 1 Keine
general_progressive_source_flag 1 Keine
general_interlaced_source_flag 0 Keine
general_non_packed_constraint_flag 1 Keine
general_frame_only_constraint_flag 1 Keine
general_reserved_zero_44bits 44-Bit-Nullen Keine
general_level_idc Weitere Informationen finden Sie in der obigen Tabelle. Keine
vps_sub_layer_ordering_info_present_flag 0 Keine
vps_max_dec_pic_buffering_minus1[0] (MaxReferenceFramesInDPB/vorherige Referenzframes/ + 1 /zusätzlicher aktueller Frame recon pic/) - 1/*minus1 für header/; Keine
vps_max_num_reorder_pics[0] 0, wenn keine B-Frames. vps_max_dec_pic_buffering_minus1 andernfalls. Keine
vps_max_latency_increase_plus1[0] 1 Keine
vps_max_layer_id 0 Keine
vps_num_layer_sets_minus1 0 Keine
vps_timing_info_present_flag 0 Keine
vps_extension_flag 0 Keine

HEVC Sequence Parameter Set expected values

Syntax-Element Erwarteter Standardwert Notizen
sps_video_parameter_set_id Benutzerspezifisch Keine
sps_max_sub_layers_minus1 Identisch mit dem zugehörigen VPS Keine
sps_temporal_id_nesting_flag Identisch mit dem zugehörigen VPS Keine
general_profile_space 0 Keine
general_tier_flag 1 für "Hoher Tarif", "0" für "Main"-Tarif Keine
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC Enumerationswert + 1 Keine
general_profile_compatibility_flag[general_profile_space] 1 Keine
general_progressive_source_flag 1 Keine
general_interlaced_source_flag 0 Keine
general_non_packed_constraint_flag 1 Keine
general_frame_only_constraint_flag 1 Keine
general_reserved_zero_44bits 44-Bit-Nullen Keine
general_level_idc Weitere Informationen finden Sie in der obigen Tabelle. Keine
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 Keine
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 Keine
bit_depth_luma_minus8 0 für NV12, 2 für P010 Keine
log2_max_pic_order_cnt_lsb_minus4 Basierend auf D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC Keine
sps_sub_layer_ordering_info_present_flag Identisch mit dem zugehörigen VPS Keine
sps_max_dec_pic_buffering_minus1 Identisch mit dem zugehörigen VPS Keine
sps_max_num_reorder_pics Identisch mit dem zugehörigen VPS Keine
sps_max_latency_increase_plus1 Identisch mit dem zugehörigen VPS Keine
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 Keine
max_transform_hierarchy_depth_inter Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC Keine
scaling_list_enabled_flag 0 Keine
amp_enabled_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION Keine
sample_adaptive_offset_enabled_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER Keine
pcm_enabled_flag 0 Keine
num_short_term_ref_pic_sets 0 Keine
long_term_ref_pics_present_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES Keine
num_long_term_ref_pics_sps 0 Keine
sps_temporal_mvp_enabled_flag 0 Keine
strong_intra_smoothing_enabled_flag 0 Keine
vui_parameters_present_flag 0 Keine
sps_extension_flag 0 Keine

HEVC Picture Parameter Set expected values

Syntax-Element Erwarteter Standardwert Notizen
pps_pic_parameter_set_id Benutzerspezifisch Keine
pps_seq_parameter_set_id Benutzerspezifisch Keine
dependent_slice_segments_enabled_flag 0 Keine
output_flag_present_flag 0 Keine
num_extra_slice_header_bits 0 Keine
sign_data_hiding_enabled_flag 0 Keine
cabac_init_present_flag 1 Keine
num_ref_idx_lx_default_active_minus1[0] std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0)) Keine
num_ref_idx_lx_default_active_minus1[1] std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0)) Keine
init_qp_minus26 0 Keine
constrained_intra_pred_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION Keine
transform_skip_enabled_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING Keine
cu_qp_delta_enabled_flag 1 Keine
diff_cu_qp_delta_depth 0 Keine
pps_cb_qp_offset 0 Keine
pps_cr_qp_offset 0 Keine
pps_slice_chroma_qp_offsets_present_flag 1 Keine
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 Keine
tiles_enabled_flag 0 Keine
entropy_coding_sync_enabled_flag 0 Keine
pps_loop_filter_across_slices_enabled_flag Basierend auf D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES Keine
deblocking_filter_control_present_flag 1 Keine
deblocking_filter_override_enabled_flag 0 Keine
pps_deblocking_filter_disabled_flag 0 Keine
pps_beta_offset_div2 0 Keine
pps_tc_offset_div2 0 Keine
pps_scaling_list_data_present_flag 0 Keine
lists_modification_present_flag 1, wenn das Senden von D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC Änderungen auflistet. Andernfalls auf 0 festgelegt. Keine
log2_parallel_merge_level_minus2 0 Keine
slice_segment_header_extension_present_flag 0 Keine
pps_extension_flag 0 Keine

Anforderungen

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