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 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.

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 :

    • D3D12DDI_VIDEO_ENCODER_OUTPUT_METADATA_0083_0 structure

    • 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

Voir aussi

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0