Поделиться через


функция обратного вызова PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 (d3d12umddi.h)

Функция обратного вызова PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 записывает команду для разрешения выходных метаданных операции кодирования в удобочитаемый формат.

Синтаксис

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

Параметры

[in] hDrvCommandList

Обработка данных драйвера для списка команд. Драйвер использует эту область памяти для хранения внутренних структур данных, связанных со списком команд.

[in] pInputArguments

Указатель на структуру D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2 , содержащую входные аргументы для этого обратного вызова.

[out] pOutputArguments

Указатель на D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS_0082_0 структуру, в которой будут храниться выходные данные этого обратного вызова.

Возвращаемое значение

None

Remarks

Для всех кодировщиков драйвер должен размещать все сведения о макете в памяти в ResolvedLayoutEncoderMetadataDrvBuffer. Клиент API анализирует эти метаданные соответствующим образом в зависимости от типа кодировщика (D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2.EncoderCodec на уровне драйвера).

ResolvedLayoutEncoderMetadataDrvBuffer для кодеков H264/HEVC

Для кодировщиков H264 и HEVC (типов, поддерживаемых до добавления расширения AV1) разрешенный макет буферной памяти не изменяется.

ResolvedLayoutEncoderMetadataDrvBuffer для кодека AV1

Для кодировки AV1 (pInputArguments-EncoderCodec> равно D3D12DDI_VIDEO_ENCODER_CODEC_0095_AV1), которая была добавлена в Windows 11 версии 24H2 (WDDM 3.2), драйвер должен использовать добавленный макет буфера с разрешением AV1.

  • Макет памяти определяется следующим образом:

    • структура D3D12DDI_VIDEO_ENCODER_OUTPUT_METADATA_0083_0

    • Элементы WrittenSubregionsCount типа D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_METADATA_0083_0 , указывающие на каждую плитку в том же порядке, что и в сжатый выходной битовый поток.

      • bSize = tile_size_minus_1 + 1 + bStartOffset
      • bStartOffset = Байт, чтобы пропустить относительно этой плитки, фактический размер закодированного битового фрагмента составляет tile_size_minus_1 = (bSize - bStartOffset - 1).
      • bHeaderSize = 0
      • I-я плитка считывается из compressed_bitstream[смещение] со смещением = [sum j = (0, (i-1)){ tile[j].bSize }] + tile[i].bStartOffset
    • Структура D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES_0095 , указывающая структуру сетки фрагмента закодированного кадра

    • D3D12DDI_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_0095 структура, указывающая значения метаданных кодирования, которые получены только после выполнения EncodeFrame на GPU.

  • Вызывающий объект может определить максимальный размер буфера разрешенных метаданных с помощью макета для AV1 в 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)

Общие сведения см. в разделе Кодировка видео D3D12 .

Требования

Требование Значение
Минимальная версия клиента Windows 11 (WDDM 3.0)
Верхняя часть d3d12umddi.h

См. также раздел

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0