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 des 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
Aucun
Remarques
Pour tous les encodeurs, le pilote doit positionner toutes les informations de disposition contiguës en mémoire dans la 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.
structure de D3D12DDI_VIDEO_ENCODER_OUTPUT_METADATA_0083_0
WrittenSubregionsCount éléments de type D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_METADATA_0083_0 indiquant chaque vignette dans le même ordre qu’ils sont écrits dans le flux de bits de sortie compressé.
L’appelant peut déduire la taille maximale de la mémoire tampon de métadonnées résolue 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 :
structure de D3D12DDI_VIDEO_ENCODER_OUTPUT_METADATA_0083_0
WrittenSubregionsCount éléments de type D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_METADATA_0083_0 indiquant chaque vignette dans le même ordre qu’ils sont écrits dans le flux de bits 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 en flux binaire 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 mosaïque d’images encodée
D3D12DDI_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_0095 structure indiquant les valeurs de métadonnées d’encodage obtenues uniquement après l’exécution de EncodeFrame sur le GPU.
L’appelant peut déduire la taille maximale de la mémoire tampon de métadonnées résolue 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)
Consultez d’encodage vidéo D3D12 pour obtenir des informations générales.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 11 (WDDM 3.0) |
d’en-tête | d3d12umddi.h |