Condividi tramite


PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 funzione di callback (d3d12umddi.h)

La funzione di callback PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 registra un comando per risolvere i metadati di output di un'operazione di codifica in un formato leggibile.

Sintassi

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
)
{...}

Parametri

[in] hDrvCommandList

Gestire i dati del driver per l'elenco di comandi. Il driver usa questa area di memoria per archiviare strutture di dati interne correlate all'elenco di comandi.

[in] pInputArguments

Puntatore a una struttura D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2 che contiene argomenti di input per questo callback.

[out] pOutputArguments

Puntatore a una struttura D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS_0082_0 in cui archiviare l'output da questo callback.

Valore restituito

nessuno

Osservazioni

Per tutti i codificatori, il driver deve posizionare tutte le informazioni di layout in modo contiguo in memoria in ResolvedLayoutEncoderMetadataDrvBuffer. Il client API analizzerà questi metadati di conseguenza a seconda del tipo di codificatore (D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2.EncoderCodec a livello di driver).

ResolvedLayoutEncoderMetadataDrvBuffer per codec H264/HEVC

Per i codificatori H264 e HEVC (tipi supportati prima dell'aggiunta dell'estensione AV1), il layout della memoria buffer risolto non viene modificato.

ResolvedLayoutEncoderMetadataDrvBuffer per codec AV1

Per la codifica AV1 (pInputArguments-EncoderCodec> uguale a D3D12DDI_VIDEO_ENCODER_CODEC_0095_AV1), aggiunta in Windows 11 versione 24H2 (WDDM 3.2), il driver deve usare il layout del buffer risolto specifico di AV1 aggiunto.

  • Il layout della memoria è definito come:

    • struttura D3D12DDI_VIDEO_ENCODER_OUTPUT_METADATA_0083_0

    • Elementi WrittenSubregionsCount di tipo D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_METADATA_0083_0 che indicano ogni riquadro nello stesso ordine in cui vengono scritti nel bitstream di output compresso.

      • bSize = tile_size_minus_1 + 1 + bStartOffset
      • bStartOffset = Byte per ignorare questo riquadro, le dimensioni effettive del riquadro codificato bitstream sono tile_size_minus_1 = (bSize - bStartOffset - 1).
      • bHeaderSize = 0
      • Il riquadro i-th viene letto dal compressed_bitstream[offset] con offset = [sum j = (0, (i-1)){ tile[j].bSize }] + tile[i].bStartOffset
    • Struttura D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES_0095 che indica la struttura della griglia del riquadro cornice codificata

    • D3D12DDI_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_0095 struttura che indica i valori dei metadati di codifica ottenuti solo dopo l'esecuzione di EncodeFrame nella GPU.

  • Il chiamante può dedurre le dimensioni massime del buffer dei metadati risolto dal layout per AV1 in 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)

Per informazioni generali, vedere Codifica video D3D12 .

Requisiti

Requisito Valore
Client minimo supportato Windows 11 (WDDM 3.0)
Intestazione d3d12umddi.h

Vedi anche

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0