Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 |