Compartilhar via


PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 função de retorno de chamada (d3d12umddi.h)

A função de retorno de chamada PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 registra um comando para resolve os metadados de saída de uma operação de codificação em um formato legível.

Sintaxe

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

Parâmetros

[in] hDrvCommandList

Manipule para os dados do driver para a lista de comandos. O driver usa essa região de memória para armazenar estruturas de dados internas relacionadas à sua lista de comandos.

[in] pInputArguments

Ponteiro para uma estrutura D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2 que contém argumentos de entrada para esse retorno de chamada.

[out] pOutputArguments

Ponteiro para uma estrutura D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS_0082_0 na qual armazenar a saída desse retorno de chamada.

Retornar valor

Nenhum

Comentários

Para todos os codificadores, o driver deve posicionar todas as informações de layout contíguas na memória no ResolvedLayoutEncoderMetadataDrvBuffer. O Cliente de API analisará esses metadados de acordo com o tipo de codificador (D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2.EncoderCodec no nível do driver).

ResolvedLayoutEncoderMetadataDrvBuffer para codecs H264/HEVC

Para codificadores H264 e HEVC (tipos com suporte antes da adição da extensão AV1), o layout de memória do buffer resolvido não é alterado.

ResolvedLayoutEncoderMetadataDrvBuffer para codec AV1

Para codificação AV1 (pInputArguments-EncoderCodec> igual a D3D12DDI_VIDEO_ENCODER_CODEC_0095_AV1), que foi adicionada em Windows 11, versão 24H2 (WDDM 3.2), o driver deve usar o layout de buffer resolvido específico do AV1 adicionado.

  • O layout de memória é definido como:

    • estrutura D3D12DDI_VIDEO_ENCODER_OUTPUT_METADATA_0083_0

    • Elementos WrittenSubregionsCount do tipo D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_METADATA_0083_0 indicando cada bloco na mesma ordem em que são gravados no bitstream de saída compactado.

      • bSize = tile_size_minus_1 + 1 + bStartOffset
      • bStartOffset = Bytes para ignorar em relação a esse bloco, o tamanho real do bloco codificado em bitstream é tile_size_minus_1 = (bSize - bStartOffset - 1).
      • bHeaderSize = 0
      • O bloco i-th é lido do compressed_bitstream[offset] com offset = [sum j = (0, (i-1)){ tile[j].bSize }] + tile[i].bStartOffset
    • A estrutura D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES_0095 que indica a estrutura de grade do bloco de quadro codificado

    • D3D12DDI_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_0095 estrutura que indica valores de metadados de codificação obtidos somente após a execução de EncodeFrame na GPU.

  • O chamador pode inferir o tamanho máximo do buffer de metadados resolvido pelo layout para AV1 em 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)

Confira Codificação de vídeo D3D12 para obter informações gerais.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 11 (WDDM 3.0)
Cabeçalho d3d12umddi.h

Confira também

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0