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 diese Speicherregion, um interne Datenstrukturen zu speichern, die sich auf die Befehlsliste beziehen.

[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

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

Rückgabewert

Keine

Bemerkungen

Für alle Encoder muss der Treiber alle Layoutinformationen im Speicher im ResolvedLayoutEncoderMetadataDrvBuffer zusammenhängend positionieren. Der API-Client analysiert diese Metadaten entsprechend vom Encodertyp (D3D12DDI_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS_0080_2.EncoderCodec auf Treiberebene).

ResolvedLayoutEncoderMetadataDrvBuffer für H264/HEVC-Codecs

Bei H264- und HEVC-Encodern (Typen, die vor dem Hinzufügen der AV1-Erweiterung unterstützt wurden) wird das Layout des aufgelösten Pufferspeichers 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 definiert wie folgt:

    • 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 in den komprimierten Ausgabebitstream geschrieben wurden.

      • bSize = tile_size_minus_1 + 1 + bStartOffset
      • bStartOffset = Bytes, die im Verhältnis zu dieser Kachel übersprungen werden sollen, ist die tatsächliche Größe der bitstreamcodierten Kachel tile_size_minus_1 = (bSize - bStartOffset - 1).
      • bHeaderSize = 0
      • Die i-te Kachel wird aus dem compressed_bitstream[offset] mit offset = [summe j = (0, (i-1)){ tile[j].bSize }] + tile[i].bStartOffset gelesen.
    • Die D3D12DDI_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES_0095-Struktur , die die Rasterstruktur der codierten Rahmenkachel angibt

    • D3D12DDI_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_0095 Struktur, die Codierungsmetadatenwerte angibt, die erst 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
Unterstützte Mindestversion (Client) Windows 11 (WDDM 3.0)
Kopfzeile d3d12umddi.h

Weitere Informationen

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0