Freigeben über


D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 Struktur (d3d12umddi.h)

Die D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0-Struktur enthält die Parameter auf Sequenzebene für die Eingabe eines Videocodierungsvorgangs.

Syntax

typedef struct D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 {
  D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0                 Flags;
  D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080                            IntraRefreshConfig;
  D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2                           RateControl;
  D3D12DDI_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC_0080                  PictureTargetResolution;
  D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080              SelectedLayoutMode;
  D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 FrameSubregionsLayoutData;
  D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0                 CodecGopSequence;
} D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0;

Angehörige

Flags

Ein D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0 Wert, der die Kennzeichnungen des Sequenzsteuerelements für den aktuellen codierten Framevorgang angibt.

IntraRefreshConfig

Eine D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080 Struktur, die die Parameter für den Intraaktualisierungsmodus angibt, die beim Auslösen von Aktualisierungssitzungen verwendet werden sollen. Ausführliche Informationen zur Verwendung von Intra-Fresh finden Sie in den Hinweisen.

RateControl

Eine D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2 Struktur, die die Konfiguration der Steuerungsrate angibt.

Überprüfen Sie das flag D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RATE_CONTROL_RECONFIGURATION_AVAILABLE, um zu ermitteln, ob die dynamische Neukonfiguration der Steuerungsrate unterstützt wird:

  • Wenn dies unterstützt wird, führt ein geänderter RateControl- dazu, dass der Satzsteuerungsalgorithmus neu gestartet wird, wobei die neue Konfiguration ab der Ausführung des zugeordneten EncodeFrame--Befehls beginnt.
  • Wenn nicht unterstützt, sollte RateControl- am Anfang der Codierungssitzung festgelegt und nicht während der Sitzung geändert werden.

PictureTargetResolution

Eine D3D12DDI_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC_0080 Struktur, die die Auflösung beschreibt, die beim Codieren dieses Frames verwendet werden soll. Die Zielauflösung muss basierend auf der Liste der Auflösungen festgelegt werden, die angegeben werden, wenn der zugeordnete Encoder heap für diesen Vorgangerstellt wurde.

Überprüfen Sie das flag D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RESOLUTION_RECONFIGURATION_AVAILABLE, um zu ermitteln, ob die dynamische Neukonfiguration für die Auflösung unterstützt wird:

  • Wenn unterstützt, gibt PictureTargetResolution- die Auflösung an, die für den zugeordneten EncodeFrame--Befehl verwendet werden soll. In einigen Codecs kann eine Änderung der Auflösung in der Mitte der Codierungssitzung erfordern, dass ein GOP mit einer potenziellen Erzwingungs-IDR/Keyframeanforderung zurückgesetzt wird und auch den decodierten Bildpuffer (DPB)-Puffer und Frameverwaltungsalgorithmen zurückgesetzt wird.
  • Wenn nicht unterstützt, gibt PictureTargetResolution- die Zielauflösung für die gesamte Codierungssitzung an und darf während der Sitzung nicht geändert werden.

SelectedLayoutMode

Ein D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080 Wert, der angibt, welcher Layoutmodus verwendet wird und welche Union-Member in FrameSubregionsLayoutData-verwendet werden sollen.

Überprüfen Sie das flag D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE, um zu ermitteln, ob die dynamische Neukonfiguration des Unterbereichs unterstützt wird:

  • Wenn unterstützt, gibt SelectedLayoutMode- den Unterregion-Partitionierungsmodus an, der für den zugeordneten befehl EncodeFrame verwendet wird.
  • Wenn diese Option nicht unterstützt wird, gibt *SelectedLayoutMode den Ziel-Unterregionsmodus der vollständigen Codierungssitzung an und darf während der Codierungssitzung nicht geändert werden.

FrameSubregionsLayoutData

Eine D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 Struktur, die optionale Codec-spezifische Daten des Layouts für Bildunterbereiche enthält. Wenn SelectedLayoutMode angibt, dass keine Unterbereiche vorhanden sind, muss dieses Element NULL sein.

CodecGopSequence

Eine D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0 Struktur, die den aktuellen GOP angibt, der in der Videosequenz in der Anzeigereihenfolge verwendet wird. Aufrufe von EncodeFrame- müssen diesem GOP folgen, jedoch in Sequenzreihenfolge nach der Neuanordnung von B-Frames.

Überprüfen Sie das Flag D3D12_VIDEO_ENCODER_SUPPORT_FLAG__0083_0_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE, um zu ermitteln, ob die dynamische NEUKONFIGURATION von GOP unterstützt wird:

  • Wenn unterstützt, gibt CodecGopSequence- den neuen GOP-Unterregionsmodus an, der ab dem zugehörigen befehl EncodeFrame- verwendet wird.
  • Wenn nicht unterstützt, gibt CodecGopSequence- das Ziel-GOP-Muster (in der Anzeigereihenfolge) der vollständigen Codierungssitzung an und darf während der Codierungssitzung nicht geändert werden.

Bemerkungen

Allgemeine Informationen finden Sie unter D3D12-Videocodierung.

Verwenden der intra-Aktualisierung

Die Verwendung bidirektionaler Referenzframes (B Frames) schließt sich gegenseitig mit der Intraaktualisierung aus. Der Aufrufer sollte überprüfen, ob CodecGopSequence-'s Struktur keine B-Frames enthält, wenn intraaktualisierungsmodi aktiv sind. Beim Abfragen nach D3D12DDICAPS_VIDEO_ENCODER_SUPPORT_DATA mit einem anderen Aktualisierungsmodus als D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONEdarf der CodecGopSequence-Satz keine B-Frames enthalten, oder die Abfrage gibt keine Unterstützung zurück.

Die Verwendung unendlicher Intraaktualisierung ist möglich, indem regelmäßig eine neue Welle der intra-refresh angefordert wird, nachdem jede Intraaktualisierung abgeschlossen wurde.

Beim Starten einer intra-Aktualisierung von N-Frames der Dauer führt der Host die folgenden Aktionen aus:

  • Legt die entsprechende Bildsteuerelementkennzeichnung fest, um die intraaktualisierung zu starten;
  • Steuert den Frameindex zwischen [0..N) in der Bildsteuerelementstruktur, um auf den Treiber über den Fortschritt der intra-Aktualisierungssitzung hinweisen zu können.

Das erwartete Verhalten beim expliziten Anfordern einer Aktualisierungswelle mit dauer N Frames folgt:

  • Wenn die Anforderung für die interne Aktualisierung am Anfang eines GOP erfolgt, tritt die intra-Aktualisierung für N-Frames auf und dann wird ein neues GOP mit einem I-Frame gestartet.

  • Wenn die Anforderung für die interne Aktualisierung in der Mitte eines GOP erfolgt, wird die Gruppe der Bilder bis zum letzten übermittelten EncodeFrame-Befehl beendet und nach der Intraaktualisierungssitzung mit einem neuen GOP neu gestartet, beginnend mit einem I-Frame. Wenn der GOP beispielsweise IPPPP ist... IPPPP..., wenn der Intra-Refresh-Start bei der teilweisen Übermittlung von IPP des GOP angefordert wird, werden die letzten beiden P-Frames dieses GOP ignoriert, die Intra-Refresh-Sitzung wird für die nächsten N Frames ausgestellt, und dann wird ein neuer Keyframe, der die GOP-Struktur neu startet, erwartet.

Für zeilenbasierte intraaktualisierung:

  • Die konfigurierte GOP-Struktur muss in Infinite IPPP neu konfiguriert werden... P... GOP (GOPLength = 0u und PPicturePeriod = 1u) für die Dauer der Intraaktualisierungssitzung. Sie kann dann nach Abschluss der Intraaktualisierungswelle erneut konfiguriert werden.

  • Der konfigurierte Unterregionspartitionsmodus wird so konfiguriert, dass er N uniform slices partitioning pro Frame für eine Dauer von N EncodeFrame- Befehlen entspricht. Dies ist besonders wichtig, wenn die Partitionierung der Unterregion auf einen inkompatiblen Modus mit intra-refresh-Anforderungen festgelegt ist, z. B. wenn die Zeile mit intracodierten Einheiten in einem Segment die Einschränkung pro Segment stören wird. Die Erwartung für die zeilenbasierte interne Aktualisierung besteht darin, dass der resultierende Frame N-Segmente, alle P-Segmente enthält, mit Ausnahme des aktuellen Zeilensegments, das ein I-Segment sein muss.

Anforderungen

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

Siehe auch

D3D12DDI_VIDEO_ENCODER_ENCODEFRAME_INPUT_STREAM_ARGUMENTS_0082_0

D3D12DDI_VIDEO_ENCODER_SUPPORT_FLAGS_0083_0

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0

PFND3D12DDI_CREATEVIDEOENCODERHEAP_0080_2