Freigeben über


YUV-Mischmodus

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Dieses Thema gilt für Windows XP Service Pack 2 oder höher.

Ab Windows XP Service Pack 2 unterstützt die VMR einen Mischmodus namens YUV-Mischmodus. Dieser Modus ist am nützlichsten für erweiterte TV- oder DVD-Anwendungen. Es handelt einen Teil der Leistung des VMR-Mixers für eine bessere Leistung auf Low-End-Grafikhardware, die ein einheitliches Design der Speicherarchitektur verwendet. Der YUV-Mischmodus wird sowohl für VMR-7 als auch für VMR-9 unterstützt.

Vorteile

Der YUV-Mischmodus hat mehrere Vorteile in Bezug auf die Renderingleistung gegenüber dem ursprünglichen RGB-Mischmodus, der vom VMR unterstützt wird:

  • Wenn sich die VMR im YUV-Mischmodus befindet, werden alle Vorgänge zum Entflechten und Zum Erstellen von Videostreams im YUV-Farbraum ausgeführt. YUV-Oberflächen benötigen in der Regel 50 % bis 60 % weniger Speicherbandbreite als gleichwertige RGB-Oberflächen.
  • Das Deinterlacing und die Streamkomposition werden durch einen einzigen Aufruf des Grafiktreibers ausgeführt. Der Treiber kann die Multitexturierungsfunktionen der Grafikhardware nutzen, was zu zusätzlichen Speicherbandbreiteneinsparungen führt.

Obwohl jede Videoanwendung den YUV-Mischmodus verwenden kann, ist er in erster Linie für zwei Arten von Videowiedergabeanwendungen vorgesehen:

  1. TV-Anwendungen, die Untertitel oder Teletext anzeigen.
  2. DVD-Anwendungen zeigen DVD-Unterbilddaten oder Untertitel an.

Einschränkungen

Eine Reihe von Einschränkungen werden vom VMR erzwungen, wenn sie in den YUV-Mischmodus versetzt wird:

  • Stream 0 (der mit Eingabenadel 0 verbundene Stream) kann progressiv oder interlaced sein. alle anderen Datenströme müssen progressiv sein.
  • GUID_NULL (Webmodus) ist für Stream 0 nicht zulässig.
  • DeinterlacePref_Weave kann nicht als Fallbackmodus verwendet werden, da dies verhindern könnte, dass ein De-Interlace-Gerät erstellt wird. Für den YUV-Mischmodus ist ein Deinterlace-Gerät erforderlich, auch wenn das eingehende Video nicht interlaced ist.
  • Am planaren Alphawert, der jedem VMR-Eingabestream zugeordnet ist, können keine Änderungen vorgenommen werden.
  • Der Benutzer kann die Z-Reihenfolge der verbundenen Videostreams nicht ändern. Die Standardmäßige Z-Reihenfolge wird aus der Anheftreihenfolge übernommen.
  • Die Farbschlüsselung wird nicht unterstützt.
  • Eingabenadel 0 muss den Videostream empfangen.
  • Die anderen Eingabenadeln können nur Video-Substreamdaten wie DVD-Unterbild, Untertitel oder Teletext empfangen.
  • Die anderen Eingabepins können nur Alpha-YUV-Formate pro Pixel akzeptieren, z. B. AYUV, AI44 und IA44.
  • Keine der Eingabepins des VIRTUELLEN Computers kann beliebige RGB-Formate akzeptieren.
  • Die von der Anwendung bereitgestellten Bitmapbilder können nicht mehr mit dem Video kombiniert werden, bevor sie auf der Anzeige angezeigt werden.
  • Einzelne Unterdatenströme können nicht horizontal oder vertikal mithilfe der "Ausgaberechteck"-Funktionen des VMR-Mixers invertiert werden. Die Neupositionierung und Größenanpassung des "normalen" Datenstroms wird unterstützt.
  • Die Mischhintergrundfarbe (angegeben durch IVMRMixerControl::SetBackgroundClr) wird weiterhin im RGB-Farbraum angegeben, genau wie im RGB-Mischmodus.

Konfiguration

Anwendungen müssen den VMR explizit konfigurieren, um den YUV-Mischmodus zu nutzen. der ursprüngliche RGB-Mischmodus bleibt der Standardmischmodus. Um den YUV-Mischmodus im VMR-7 zu aktivieren, rufen Sie IVMRMixerControl::SetMixingPrefs mit dem flag MixerPref_RenderTargetYUV auf. Dieser Aufruf muss ausgeführt werden, bevor eine der Eingabepins des virtuellen Computers verbunden ist. Um den YUV-Mischmodus im VMR-9 zu aktivieren, rufen Sie IVMRMixerControl9::SetMixingPrefs mit dem flag MixerPref9_RenderTargetYUV auf.

Die einzige Möglichkeit, festzustellen, ob der VMR-7 den neuen YUV-Mischmodus unterstützt, besteht darin, den VMR in diesen Modus festzulegen. Wenn der Aufruf erfolgreich ist, können Sie die VMR bei Bedarf trotzdem wieder in den RGB-Mischmodus versetzen. Nachdem sie in den YUV-Mischmodus versetzt wurde, kann der VMR erst wieder in den RGB-Mischmodus umgestellt werden, nachdem alle Eingabepins getrennt wurden.

Im YUV-Mischmodus können Sie die Auslastung der Grafikverarbeitungseinheit (GRAPHICS Processing Unit, GPU) verringern, indem Sie die folgenden Flags in der SetMixingPrefs-Methode anwenden:

Flag Beschreibung
VMR-7: MixerPref_DynamicSwitchToBOBVMR-9: MixerPref9_DynamicSwitchToBOB
Wechseln Sie zum Bob-Deinterlacing.
VMR-7: MixerPref_DynamicDecimateBy2VMR-9: MixerPref_DynamicDecimateBy2
Dezimieren Sie das Bild horizontal und vertikal um den Faktor 2.

 

Sie können diese Flags hinzufügen oder entfernen, während das Filterdiagramm ausgeführt wird. die Änderung wird angewendet, wenn der VMR-Mixer den nächsten Videoframe erstellt. Die Flags schließen sich nicht gegenseitig aus. Diese Einstellungen reduzieren die Qualität des Bilds, sodass Sie sie in der Regel nur dann anwenden, wenn die Videoqualität weniger wichtig ist , z. B. wenn Videos in einem kleinen Teil der Benutzeroberfläche wiedergegeben werden.

Verwenden des VMR-Mischmodus