Partager via


structure D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC (d3d12video.h)

Représente les éléments de contrôle au niveau de l’image pour la commande EncodeFrame associée pour l’encodage HEVC.

Syntaxe

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;

Membres

Flags

Combinaison OR au niveau du bit de valeurs de l’énumération D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS spécifiant des indicateurs de configuration pour le cadre encodé.

FrameType

Valeur de l’énumération D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC spécifiant le type d’image. Assurez-vous que les indicateurs spécifiques au codec prennent en charge le type spécifié. Cette sélection doit être synchronisée avec la configuration de structure goP définie par l’hôte. Notez que le GOP est défini dans l’ordre d’affichage et que cette sélection du type d’image doit suivre le GOP, mais dans l’ordre d’encodage.

slice_pic_parameter_set_id

UINT spécifiant la valeur à utiliser dans les en-têtes de segment de l’image actuelle pour référencer le PPS.

PictureOrderCountNumber

UINT spécifiant l’ordre d’affichage du cadre actuel.

TemporalLayerIndex

UINT spécifiant le numéro de couche d’image dans la hiérarchie temporelle. Vérifiez le nombre maximal de couches dans D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

List0ReferenceFramesCount

UINT spécifiant le nombre de références d’image passées à utiliser pour cette image. Cette valeur doit être cohérente avec ce qui a été exposé dans D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

pList0ReferenceFrames

Pointeur vers un tableau UINT spécifiant la liste des trames de référence d’images passées à utiliser pour cette image. Chaque valeur entière de ce tableau s’indexe en pReferenceFramesReconPictureDescriptors pour référencer les images conservées dans le DPB.

List1ReferenceFramesCount

UINT spécifiant le nombre de références d’images futures à utiliser pour cette image. Cette valeur doit être cohérente avec ce qui a été exposé dans D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

pList1ReferenceFrames

Pointeur vers un tableau UINT spécifiant la liste des futurs cadres de référence de trame à utiliser pour cette image. Chaque valeur entière de ce tableau s’indexe en pReferenceFramesReconPictureDescriptors pour référencer les images conservées dans le DPB.

ReferenceFramesReconPictureDescriptorsCount

UINT spécifiant le nombre d’entrées dans pReferenceFramesReconPictureDescriptors.

pReferenceFramesReconPictureDescriptors

Pointeur vers un tableau UINT qui décrit l’état actuel de la mémoire tampon DPB conservée dans D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames. Les pList0ReferenceFrames et pList1ReferenceFrames répertorient les index mappés des références passées/futures dans ce tableau de descripteurs.

Ce tableau de descripteurs, à son tour, mappe une image de référence pour ce cadre dans un index de ressources dans le tableau d’images reconstruit D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames. En outre, pour chaque image de référence, il indique l’encodage et le numéro de commande d’affichage et s’il s’agit d’une référence à long terme.

La taille de ce tableau correspond toujours à D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames.NumTextures pour la commande EncodeFrame associée.

List0RefPicModificationsCount

UINT spécifiant le nombre d’éléments dans pList0RefPicModifications.

pList0RefPicModifications

Pointeur vers un tableau UINT contenant des commandes de modification pour la liste L0.

List1RefPicModificationsCount

UINT spécifiant le nombre d’éléments dans pList1RefPicModifications.

pList1RefPicModifications

Pointeur vers un tableau UINT contenant des commandes de modification pour la liste L1.

QPMapValuesCount

UINT spécifiant le nombre d’éléments présents dans pRateControlQPMap. Cela doit correspondre au nombre de blocs de codage dans l’image, arrondissant la résolution d’images aux valeurs alignées les plus proches.

pRateControlQPMap

Pointeur vers un tableau d’Int8 contenant, dans l’ordre d’analyse ligne/colonne, les valeurs de carte QP à utiliser sur chaque région carrée pour ce cadre. Les dimensions de la carte QP peuvent être calculées à l’aide de la résolution et de la D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS actuelles. QPMapRegionPixelsSize qui transmet les tailles de région carrées.

Notes

Les tableaux suivants répertorient les valeurs VPS, SPS et PPS attendues pour l’encodage HEVC.

mappages Level_idc pour HEVC

Niveau D3D12 General_level_idc attendu Notes
D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 30 Correspond à 3 * suffixe de niveau d’énumération à 2 chiffres (10)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 60 Correspond à 3 * suffixe de niveau d’énumération à 2 chiffres (20)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 63 Correspond à 3 * suffixe de niveau d’énumération à 2 chiffres (21)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 90 Correspond à 3 * suffixe de niveau d’énumération à 2 chiffres (30)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 93 Correspond à 3 * suffixe de niveau d’énumération à 2 chiffres (31)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 1 20 Correspond à 3 * suffixe de niveau d’énumération à 2 chiffres (40)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 1 23 Correspond à 3 * suffixe de niveau d’énumération à 2 chiffres (41)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 1 50 Correspond à 3 * suffixe de niveau d’énumération à 2 chiffres (50)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 1 53 Correspond à 3 * suffixe à 2 chiffres de niveau d’énumération (51)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 1 56 Correspond à 3 * suffixe de niveau d’énumération à 2 chiffres (52)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 1 80 Correspond à 3 * suffixe de niveau d’énumération à 2 chiffres (60)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 1 83 Correspond à 3 * suffixe de niveau d’énumération à 2 chiffres (61)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 1 86 Correspond à 3 * suffixe de niveau d’énumération à 2 chiffres (62)

HEVC Video Parameter Set valeurs attendues

Élément Syntax Valeur par défaut attendue Notes
vps_video_parameter_set_id Spécifique à l’utilisateur None
vps_base_layer_internal_flag 0 None
vps_base_layer_available_flag 0 None
vps_max_layers_minus1 0 None
vps_max_sub_layers_minus1 0 None
vps_temporal_id_nesting_flag 1 None
vps_reserved_ffff_16bits 0xFFFF None
general_profile_space 0 None
general_tier_flag 1 pour le niveau supérieur, 0 pour le niveau principal None
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC valeur d’énumération + 1 None
general_profile_compatibility_flag[general_profile_space] 1 None
general_progressive_source_flag 1 None
general_interlaced_source_flag 0 None
general_non_packed_constraint_flag 1 None
general_frame_only_constraint_flag 1 None
general_reserved_zero_44bits Zéros 44 bits None
general_level_idc Consultez le tableau ci-dessus None
vps_sub_layer_ordering_info_present_flag 0 None
vps_max_dec_pic_buffering_minus1[0] (MaxReferenceFramesInDPB/previous reference frames/ + 1 /additional current frame recon pic/) - 1/*moins1 pour l’en-tête/; None
vps_max_num_reorder_pics[0] 0 si aucune trame B. vps_max_dec_pic_buffering_minus1 sinon. None
vps_max_latency_increase_plus1[0] 1 None
vps_max_layer_id 0 None
vps_num_layer_sets_minus1 0 None
vps_timing_info_present_flag 0 None
vps_extension_flag 0 None

Valeurs attendues de l’ensemble de paramètres de séquence HEVC

Élément Syntax Valeur par défaut attendue Notes
sps_video_parameter_set_id Spécifique à l’utilisateur None
sps_max_sub_layers_minus1 Identique à dans vps associé None
sps_temporal_id_nesting_flag Identique à dans vps associé None
general_profile_space 0 None
general_tier_flag 1 pour le niveau supérieur, 0 pour le niveau principal None
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC valeur d’énumération + 1 None
general_profile_compatibility_flag[general_profile_space] 1 None
general_progressive_source_flag 1 None
general_interlaced_source_flag 0 None
general_non_packed_constraint_flag 1 None
general_frame_only_constraint_flag 1 None
general_reserved_zero_44bits Zéros 44 bits None
general_level_idc Consultez le tableau ci-dessus None
chroma_format_idc 1 4.2.0 pour NV12 et P010
pic_width_in_luma_samples std::ceil(sequenceTargetResolution.Width / Sous-régionBlockPixelsSize)) * Sous-régionBlockPixelsSize Utilisez la résolution d’images actuelle pour D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. Sous-régionBlockPixelsSize
pic_height_in_luma_samples std::ceil(sequenceTargetResolution.Height / Sous-régionBlockPixelsSize)) * Sous-régionBlockPixelsSize Utilisez la résolution d’images actuelle pour D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. Sous-régionBlockPixelsSize
conformance_window_flag 0 si la résolution est alignée sur Sous-régionBlockPixelsSize, 1 sinon None
conf_win_left_offset 0 Uniquement si conformance_windows_flag = 1
conf_win_right_offset (sps.pic_width_in_luma_samples - encodeResolution.Width) >> 1 Uniquement si conformance_windows_flag = 1
conf_win_top_offset 0 Uniquement si conformance_windows_flag = 1
conf_win_bottom_offset (sps.pic_height_in_luma_samples - encodeResolution.Height) >> 1 Uniquement si conformance_windows_flag = 1
bit_depth_luma_minus8 0 pour NV12, 2 pour P010 None
bit_depth_luma_minus8 0 pour NV12, 2 pour P010 None
log2_max_pic_order_cnt_lsb_minus4 Basé sur D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC None
sps_sub_layer_ordering_info_present_flag Identique à dans vps associé None
sps_max_dec_pic_buffering_minus1 Identique à dans vps associé None
sps_max_num_reorder_pics Identique à dans vps associé None
sps_max_latency_increase_plus1 Identique à dans vps associé None
log2_min_luma_coding_block_size_minus3 std::log2(minCuSize) - 3) Par exemple MinCUSize=8 pour D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8
log2_diff_max_min_luma_coding_block_size std::log2(maxCuSize) - std::log2(minCuSize)) Par exemple MaxCUSize=16 pour D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16
log2_min_transform_block_size_minus2 std::log2(minTuSize) - 2) Par exemple MinTuSize=4 pour D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4
log2_diff_max_min_transform_block_size std::log2(maxTuSize) - std::log2(minTuSize)) Par exemple MaxTuSize=16 pour D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16
max_transform_hierarchy_depth_inter Basé sur D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC None
max_transform_hierarchy_depth_inter Basé sur D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC None
scaling_list_enabled_flag 0 None
amp_enabled_flag Basé sur D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION None
sample_adaptive_offset_enabled_flag Basé sur D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER None
pcm_enabled_flag 0 None
num_short_term_ref_pic_sets 0 None
long_term_ref_pics_present_flag Basé sur D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES None
num_long_term_ref_pics_sps 0 None
sps_temporal_mvp_enabled_flag 0 None
strong_intra_smoothing_enabled_flag 0 None
vui_parameters_present_flag 0 None
sps_extension_flag 0 None

Valeurs attendues de l’ensemble de paramètres d’image HEVC

Élément Syntax Valeur par défaut attendue Notes
pps_pic_parameter_set_id Spécifique à l’utilisateur None
pps_seq_parameter_set_id Spécifique à l’utilisateur None
dependent_slice_segments_enabled_flag 0 None
output_flag_present_flag 0 None
num_extra_slice_header_bits 0 None
sign_data_hiding_enabled_flag 0 None
cabac_init_present_flag 1 None
num_ref_idx_lx_default_active_minus1[0] std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0)) None
num_ref_idx_lx_default_active_minus1[1] std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0)) None
init_qp_minus26 0 None
constrained_intra_pred_flag Basé sur D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION None
transform_skip_enabled_flag Basé sur D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING None
cu_qp_delta_enabled_flag 1 None
diff_cu_qp_delta_depth 0 None
pps_cb_qp_offset 0 None
pps_cr_qp_offset 0 None
pps_slice_chroma_qp_offsets_present_flag 1 None
weighted_pred_flag 0 Aucune prise en charge de la prédiction pondérée dans l’API
weighted_bipred_flag 0 Aucune prise en charge de la prédiction pondérée dans l’API
transquant_bypass_enabled_flag 0 None
tiles_enabled_flag 0 None
entropy_coding_sync_enabled_flag 0 None
pps_loop_filter_across_slices_enabled_flag Basé sur D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES None
deblocking_filter_control_present_flag 1 None
deblocking_filter_override_enabled_flag 0 None
pps_deblocking_filter_disabled_flag 0 None
pps_beta_offset_div2 0 None
pps_tc_offset_div2 0 None
pps_scaling_list_data_present_flag 0 None
lists_modification_present_flag 1 si l’envoi d’D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC répertorie les modifications. Sinon, définissez sur 0. None
log2_parallel_merge_level_minus2 0 None
slice_segment_header_extension_present_flag 0 None
pps_extension_flag 0 None

Spécifications

   
Client minimal pris en charge Windows Build 22000
Serveur minimal pris en charge Windows Build 22000
En-tête d3d12video.h