Freigeben über


PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 Rückruffunktion (d3d12umddi.h)

Die PFND3D12DDI_VIDEO_ENCODE_RESOLVE_OUTPUT_METADATA_0082_0 Rückruffunktion zeichnet einen Befehl auf, um die Ausgabemetadaten eines Codierungsvorgangs in ein lesbares Format aufzulösen.

Syntax

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

Parameter

[in] hDrvCommandList

Behandeln Sie die Treiberdaten für die Befehlsliste. Der Treiber verwendet diesen Speicherbereich, um interne Datenstrukturen zu speichern, die mit der Befehlsliste zusammenhängen.

[in] pInputArguments

Zeiger auf eine D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2 Struktur, die Eingabeargumente für diesen Rückruf enthält.

[out] pOutputArguments

Zeigen Sie auf eine D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS_0082_0 Struktur, in der die Ausgabe dieses Rückrufs gespeichert werden soll.

Rückgabewert

Nichts

Bemerkungen

Für alle Encoder muss der Treiber alle Layoutinformationen fortlaufend im Arbeitsspeicher im ResolvedLayoutEncoderMetadataDrvBufferpositionieren. Der API-Client analysiert diese Metadaten entsprechend, je nach Encodertyp (D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2.EncoderCodec auf Treiberebene).

ResolvedLayoutEncoderMetadataDrvBuffer für H264/HEVC-Codecs

Für H264- und HEVC-Encoder (Typen, die vor dem Hinzufügen der AV1-Erweiterung unterstützt werden), wird das aufgelöste Pufferspeicherlayout nicht geändert.

ResolvedLayoutEncoderMetadataDrvBuffer für AV1-Codec

Für die AV1-Codierung (pInputArguments->EncoderCodec- gleich D3D12DDI_VIDEO_ENCODER_CODEC_0095_AV1), die in Windows 11, Version 24H2 (WDDM 3.2) hinzugefügt wurde, sollte der Treiber das hinzugefügte AV1-spezifische aufgelöste Pufferlayout verwenden.

  • Das Speicherlayout ist wie folgt definiert:

    • D3D12DDI_VIDEO_ENCODER_OUTPUT_METADATA_0083_0 Struktur

    • WrittenSubregionsCount Elemente vom Typ D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_METADATA_0083_0, die jede Kachel in der gleichen Reihenfolge angeben, in der sie im komprimierten Ausgabe-Bitstream geschrieben werden.

      • bSize = tile_size_minus_1 + 1 + bStartOffset
      • bStartOffset = Bytes, die relativ zu dieser Kachel übersprungen werden sollen, die tatsächliche bitstreamcodierte Kachelgröße ist tile_size_minus_1 = (bSize - bStartOffset - 1).
      • bHeaderSize = 0
      • Die i-th-Kachel wird aus der compressed_bitstream[offset] mit Offset = [Summe j = (0, (i-1)){ tile[j].bSize }] + tile[i].bStartOffset
    • Die D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES_0095 Struktur, die die codierte Frame-Kachelrasterstruktur angibt

    • D3D12DDI_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_0095 Struktur, die Codierungsmetadatenwerte angibt, die nur nach der Ausführung von EncodeFrame- auf der GPU abgerufen werden.

  • Der Aufrufer kann die maximale Größe des aufgelösten Metadatenpuffers anhand des Layouts für AV1 in ResolveEncoderOutputMetadata-ableiten.

    • 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)

Allgemeine Informationen finden Sie unter D3D12-Videocodierung.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 11 (WDDM 3.0)
Header- d3d12umddi.h

Siehe auch

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0