D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 structure (d3d12video.h)
Représente les éléments de contrôle au niveau de l’image pour la commande EncodeFrame associée pour l’encodage H.264.
Syntaxe
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;
Membres
Flags
Combinaison or au niveau du bit de valeurs de l’énumération D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS spécifiant des indicateurs de configuration pour le frame encodé.
FrameType
Valeur de l’énumération D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 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.
pic_parameter_set_id
UINT spécifiant la valeur à utiliser dans les en-têtes de tranche du frame actuel pour référencer le PPS.
idr_pic_id
Lorsque FrameType** est D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME, un UINT indiquant l’identificateur du frame IDR à utiliser dans tous les en-têtes de tranches présents dans le frame.
PictureOrderCountNumber
UINT spécifiant l’ordre d’affichage actuel de l’image.
FrameDecodingOrderNumber
UINT spécifiant l’ordre de décodage de trame avec une sémantique, comme indiqué par l’en-tête de tranche frame_num élément de syntaxe qui s’incrémente après chaque image de référence.
TemporalLayerIndex
UINT spécifiant le numéro de couche image dans la hiérarchie temporelle. Vérifiez le nombre maximal de couches dans D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.
List0ReferenceFramesCount
UINT spécifiant le nombre de références d’images passées à utiliser pour ce frame. Cette valeur doit être cohérente avec ce qui a été exposé dans D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.
pList0ReferenceFrames
Pointeur vers un tableau UINT spécifiant la liste des cadres de référence de frame précédents à utiliser pour ce frame. Chaque valeur entière de ce tableau s’indexe dans pReferenceFramesReconPictureDescriptors pour référencer des images conservées dans le DPB.
List1ReferenceFramesCount
UINT spécifiant le nombre de références de trame futures à utiliser pour ce frame. Cette valeur doit être cohérente avec ce qui a été exposé dans D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.
pList1ReferenceFrames
Pointeur vers un tableau UINT spécifiant la liste des futurs cadres de référence de trame à utiliser pour ce frame. Chaque valeur entière de ce tableau s’indexe dans pReferenceFramesReconPictureDescriptors pour référencer des 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 listes pList0ReferenceFrames et pList1ReferenceFrames répertorient les index à partir de références passées/futures dans ce tableau de descripteurs.
Ce tableau de descripteurs mappe à son tour une image de référence pour ce cadre dans un index de ressources dans le tableau d’images reconstruits D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames. En outre, pour chaque image de référence, elle indique le numéro d’ordre d’encodage et d’affichage, et indique 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.
adaptive_ref_pic_marking_mode_flag
UCHAR définissant un mode sémantique pour la gestion des références de trame.
adaptive_ref_pic_marking_mode_flag valeur | Mode de marquage d’image de référence spécifié |
---|---|
0 | 1 |
Mode de marquage d’image de référence de fenêtre glissante : mode de marquage fournissant un mécanisme premier entré premier sorti pour les images de référence à court terme. | Mode de marquage d’image de référence adaptatif : mode de marquage d’image de référence fournissant des éléments de syntaxe pour spécifier le marquage des images de référence comme « inutilisées pour référence » et pour affecter des index de trame à long terme. |
RefPicMarkingOperationsCommandsCount
UINT spécifiant le nombre d’images de référence marquant les opérations associées à l’image actuelle. Nécessite que adaptive_ref_pic_marking_mode_flag soit défini sur 1.
pRefPicMarkingOperationsCommands
Pointeur vers un tableau de structures D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION représentant la liste des images de référence marquant les opérations associées au frame actuel. Les opérations décrites dans cette liste doivent être reflétées dans les descripteurs DPB en conséquence pendant la session d’encodage.
List0RefPicModificationsCount
UINT spécifiant le nombre d’éléments dans pList0RefPicModifications.
pList0RefPicModifications
Pointeur vers un tableau de structures D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION représentant la liste des opérations de modification de liste d’images de référence pour la liste pList0ReferenceFrames .
List1RefPicModificationsCount
UINT spécifiant le nombre d’éléments dans pList1RefPicModifications.
pList1RefPicModifications
Pointeur vers un tableau de structures D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION représentant la liste des opérations de modification de liste d’images de référence pour la liste pList1ReferenceFrames .
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 de trame aux valeurs alignées les plus proches.
pRateControlQPMap
Pointeur vers un tableau d’Int8 contenant, dans l’ordre d’analyse de ligne/colonne, les valeurs de mappage QP à utiliser sur chaque région carrée pour ce frame. 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
Notez que si le cadre actuel est marqué comme image de référence, la sortie doit contenir l’image reconstruite ainsi que le flux de bits pour que l’hôte la place dans les commandes futures dans la liste de références d’images reconstruites. Notez qu’il peut y avoir des limitations pour que certains types de frame soient marqués comme références, case activée prise en charge des fonctionnalités avant de définir ces valeurs.
Les tableaux suivants répertorient les valeurs SPS et PPS attendues pour l’encodage H264.
mappages Level_idc pour H264
Niveau D3D12 | Level_idc attendus | Notes |
---|---|---|
D3D12_VIDEO_ENCODER_LEVELS_H264_1 | 10 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_1b | 11 | SPS.constraint_set3 doit être 1 |
D3D12_VIDEO_ENCODER_LEVELS_H264_11 | 11 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_12 | 12 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_13 | 13 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_2 | 20 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_21 | 21 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_22 | 22 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_3 | 30 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_31 | 31 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_32 | 32 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_4 | 40 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_41 | 41 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_42 | 42 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_5 | 50 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_51 | 51 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_52 | 52 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_6 | 60 | Aucun |
D3D12_VIDEO_ENCODER_LEVELS_H264_61 | 61 | None |
D3D12_VIDEO_ENCODER_LEVELS_H264_62 | 62 | None |
Valeurs attendues du jeu de paramètres de séquence H264
Élément Syntax | Valeur par défaut attendue | Notes |
---|---|---|
profile_idc | Valeur d’énumération de H264_PROFILE_MAIN/H264_PROFILE_HIGH/H264_PROFILE_HIGH10 | None |
constraint_set0_flag | 0 | None |
constraint_set1_flag | 0 | None |
constraint_set2_flag | 0 | None |
constraint_set3_flag | 0 | 1 si vous utilisez D3D12_VIDEO_ENCODER_LEVELS_H264_1b |
constraint_set4_flag | 0 | None |
constraint_set5_flag | 0 | None |
reserved_zero_2bits | 0 | None |
level_idc | Consultez le tableau ci-dessus pour connaître les niveaux H264 | None |
seq_parameter_set_id | Spécifique à l’utilisateur | None |
chroma_format_idc | 1 | Pour une utilisation avec les formats P010 ou NV12 YUV 4.2.0 uniquement |
bit_depth_luma_minus8 | 0 pour NV12, 2 pour P010 | None |
qpprime_y_zero_transform_bypass_flag | 0 | None |
seq_scaling_matrix_present_flag | 0 | None |
log2_max_frame_num_minus4 | Identique à dans D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | None |
pic_order_cnt_type | Identique à dans D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | Seuls les modes 0 et 2 pris en charge dans cette API |
log2_max_pic_order_cnt_lsb_minus4 | Identique à dans D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | Uniquement si pic_order_cnt_type == 0 |
max_num_ref_frames | Nombre maximal d’images de référence utilisées dans la session d’encodage | None |
gaps_in_frame_num_value_allowed_flag | 0 | None |
pic_width_in_mbs_minus1 | std::ceil(sequenceTargetResolution.Width / 16.0)) - 1; | None |
pic_height_in_map_units_minus1 | std::ceil(sequenceTargetResolution.Height / 16.0)) - 1; | None |
frame_mbs_only_flag | 0 | Aucune prise en charge entrelacs |
direct_8x8_inference_flag | Basé sur D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM | None |
frame_cropping_flag | 0 ou 1 selon que la résolution d’encodage est 16 alignée ou non | None |
frame_cropping_rect_left_offset | 0 | Uniquement si frame_cropping_flag = 1 |
frame_cropping_rect_right_offset | ((pic_width_in_mbs_minus1+1) * 16 - sequenceTargetResolution.Width) / 2 | Uniquement si frame_cropping_flag = 1 |
frame_cropping_rect_top_offset | ((pic_height_in_map_units_minus1+1) * 16 - sequenceTargetResolution.Height) / 2 | Uniquement si frame_cropping_flag = 1 |
frame_cropping_rect_bottom_offset | 0 | Uniquement si frame_cropping_flag = 1 |
vui_paramenters_present_flag | 0 | None |
Valeurs attendues du jeu de paramètres d’image H264
Élément Syntax | Valeur par défaut attendue | Notes |
---|---|---|
pic_parameter_set_id | Spécifique à l’utilisateur | None |
seq_parameter_set_id | Spécifique à l’utilisateur | None |
entropy_coding_mode_flag | Basé sur D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING | None |
pic_order_present_flag | 0 | Prise en charge uniquement pour pic_cnt_type = 0, 2 |
num_slice_groups_minus1 | 0 | None |
num_ref_idx_l1_active_minus1 | std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0) | None |
num_ref_idx_l0_active_minus1 | std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0) | None |
weighted_pred_flag | 0 | None |
weighted_bipred_idc | 0 | None |
pic_init_qp_minus26 | 0 | None |
pic_init_qs_minus26 | 0 | None |
chroma_qp_index_offset | 0 | None |
deblocking_filter_control_present_flag | 1 | None |
constrained_intra_pred_flag | Basé sur D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION | None |
redundant_pic_cnt_present_flag | 0 | None |
transform_8x8_mode_flag | Basé sur D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM | Uniquement si vous utilisez des profils élevés |
pic_scaling_matrix_present_flag | 0 | None |
second_chroma_qp_index_offset | 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 |