PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 fonction de rappel (d3d12umddi.h)
La fonction de rappel PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 enregistre une commande pour résoudre les métadonnées de sortie d’une opération d’encodage dans un format lisible.
Syntaxe
PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 Pfnd3d12ddiVideoEncodeResolveOutputMetadata00820;
void Pfnd3d12ddiVideoEncodeResolveOutputMetadata00820(
[in] D3D12DDI_HCOMMANDLIST hDrvCommandList,
[in] const D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2 *pInputArguments,
[out] const D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS_0082_0 *pOutputArguments
)
{...}
Paramètres
[in] hDrvCommandList
Gérez les données du pilote pour la liste de commandes. Le pilote utilise cette région de mémoire pour stocker les structures de données internes liées à sa liste de commandes.
[in] pInputArguments
Pointeur vers une structure D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2 qui contient des arguments d’entrée pour ce rappel.
[out] pOutputArguments
Pointeur vers une structure D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS_0082_0 dans laquelle stocker la sortie de ce rappel.
Valeur de retour
None
Remarques
Pour tous les encodeurs, le pilote doit placer toutes les informations de disposition de façon contiguë en mémoire dans ResolvedLayoutEncoderMetadataDrvBuffer. Le client d’API analyse ces métadonnées en conséquence en fonction du type d’encodeur (D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2.EncoderCodec au niveau du pilote).
ResolvedLayoutEncoderMetadataDrvBuffer pour les codecs H264/HEVC
Pour les encodeurs H264 et HEVC (types pris en charge avant l’ajout de l’extension AV1), la disposition de mémoire tampon résolue n’est pas modifiée.
Les éléments WrittenSubregionsCount de type D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_METADATA_0083_0 indiquant chaque vignette dans le même ordre qu’elles sont écrites dans le flux binaire de sortie compressé.
L’appelant peut déduire la taille maximale de la mémoire tampon de métadonnées résolues par la disposition H264/HEVC pour ResolveEncoderOutputMetadata :
- maxSliceNumber = D3D12DDI_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS_0080_2.MaxSubregionsNumber ;
- MaxEncoderOutputMetadataResolvedBufferSize = sizeof(D3D12DDI_VIDEO_ENCODER_OUTPUT_METADATA_0083_0) + (maxSliceNumber * sizeof(D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_METADATA_0083_0))
ResolvedLayoutEncoderMetadataDrvBuffer pour le codec AV1
Pour l’encodage AV1 (pInputArguments-EncoderCodec> égal à D3D12DDI_VIDEO_ENCODER_CODEC_0095_AV1), qui a été ajouté dans Windows 11, version 24H2 (WDDM 3.2), le pilote doit utiliser la disposition de mémoire tampon résolue spécifique à AV1 ajoutée.
La disposition de la mémoire est définie comme suit :
Les éléments WrittenSubregionsCount de type D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_METADATA_0083_0 indiquant chaque vignette dans le même ordre qu’elles sont écrites dans le flux binaire de sortie compressé.
- bSize = tile_size_minus_1 + 1 + bStartOffset
- bStartOffset = Octets à ignorer par rapport à cette vignette, la taille réelle de la vignette codée bitstream est tile_size_minus_1 = (bSize - bStartOffset - 1).
- bHeaderSize = 0
- La vignette i-th est lue à partir du compressed_bitstream[offset] avec offset = [sum j = (0, (i-1)){ tile[j].bSize }] + tile[i].bStartOffset
Structure D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES_0095 indiquant la structure de grille de vignette de trame encodée
D3D12DDI_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_0095 structure indiquant l’encodage des valeurs de métadonnées obtenues uniquement après l’exécution d’EncodeFrame sur le GPU.
L’appelant peut déduire la taille maximale de la mémoire tampon de métadonnées résolues par la disposition d’AV1 dans ResolveEncoderOutputMetadata.
- MaxTiles = D3D12DDI_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS_0080_2.MaxSubregionsNumber ;
- MaxEncoderOutputMetadataResolvedBufferSize = sizeof(D3D12DDI_VIDEO_ENCODER_OUTPUT_METADATA_0083_0) + (MaxTiles * sizeof(D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_METADATA_0083_0)) ; + sizeof(D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES_0095) + sizeof(D3D12DDI_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_0095)
Pour plus d’informations générales, consultez Encodage vidéo D3D12 .
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 11 (WDDM 3.0) |
En-tête | d3d12umddi.h |