Partager via


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.

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

Voir aussi

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0