Nicht quadratische Mischung
[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.
Wenn VMR-9 zwei oder mehr Datenströme mischt, gibt es zwei Punkte, an denen Skalierungen auftreten können: Wenn der Mixer die Eingabedatenströme zusammensetzt, und wenn der Zuteilungs-Referenten das zusammengesetzte Bild rendert.
In früheren Versionen von VMR-9 wurden die Eingabedatenströme immer mit einem quadratischen (1:1) Pixelseitenverhältnis (PAR) zusammengesetzt, auch wenn nur ein einzelner Videostream vorhanden war. Wenn der Eingabedatenstrom nicht quadratische Pixel aufweist, verursachte dies einen unnötigen Skalierungsvorgang. Die Skalierung sollte natürlich so weit wie möglich vermieden werden, da dies die endgültige Bildqualität beeinträchtigt.
Ab Windows XP Service Pack 2 unterstützt VMR-9 zwei verschiedene Möglichkeiten, um das Problem der Doppelskalierung zu vermeiden:
- Implementieren Sie einen benutzerdefinierten Zuweisungs-Presenter und unterstützen Sie die IVMRSurfaceAllocatorEx9-Schnittstelle .
- Verwenden Sie den nicht quadratischen Mischmodus.
In diesem Abschnitt wird der nicht quadratische Mischmodus beschrieben. Anwendungen können beide Techniken kombinieren.
Funktionsweise der nicht quadratischen Mischung
Im nicht quadratischen Mischmodus wählt VMR-9 einen Eingabedatenstrom aus, um die Zielgröße und den PAR-Wert zu verwenden. Der Mixer der VMR skaliert das Video nicht aus diesem Stream oder aus anderen Streams mit derselben Bildgröße und PAR. Datenströme mit einem anderen Größen- oder Seitenverhältnis werden so skaliert, dass sie dem Ziel-PAR und dem Letterbox entsprechen, um der endgültigen Ausgabebildgröße zu entsprechen.
Die Auswahl der Streams hängt vom aktuellen Mischmodus ab:
- Der YUV-Mischmodus ist auf einen Videostream an Pin 0 beschränkt. (Die anderen Pins verfügen möglicherweise über untergeordnete oder geschlossene Untertitel Streams.) Daher wählt VMR-9 immer Pin 0 für die Zielimagegröße und par aus.
- Im RGB-Mischmodus wählt der VMR den Stream mit der größten Bildgröße aus. Wenn mehr als eins vorhanden ist, wählt es die mit der höchsten z-Reihenfolge aus. und wenn immer noch ein Gleichstand vorhanden ist, wird der Stream mit der niedrigsten Pinnummer ausgewählt.
Beispiele für vorgänge
Beispiel 1: Stream 0 ist 720 x 480 Pixel mit einem Bildseitenverhältnis von 16:9. Stream 1 ist 640 x 480 Pixel mit einem Bildseitenverhältnis von 4:3.
In diesem Beispiel weist Stream 0 die größte Bildgröße auf, sodass der VMR diesen Stream unabhängig vom RGB-Mischmodus oder YUB-Mischmodus wählt. Der PAR ist 32:27 (16:9 / 720:480), was bedeutet, dass das Bild horizontal um dieses Verhältnis gestreckt werden muss, um das richtige Bildseitenverhältnis von 16:9 zu erzeugen.
Um dem Ziel-PAR zu entsprechen, skaliert der VMR-Mixer Stream 1 um das umgekehrte Verhältnis (27:32), was zu einem Bild von 540 x 480 führt. Die beiden Streams werden dann auf einer Oberfläche zusammengesetzt. Um das resultierende Bild richtig anzuzeigen, muss der Zuweisungsmoderator das Bild horizontal strecken, um das Bildseitenverhältnis von 16:9 anzupassen.
Beispiel 2: Stream 0 ist 720 x 480 Pixel mit einem Bildseitenverhältnis von 16:9. Stream 1 ist ein 1024 x 768 Pixel mit einem Bildseitenverhältnis von 4:3.
Wenn der VMR-9 den YUV-Mischmodus verwendet, wählt er immer Stream 0 aus. Daher dehnt er stream 1 bis 540 x 480 Pixel, um dem PAR von Stream 0 zu entsprechen.
Wenn der VMR-9 den RGB-Mischmodus verwendet, wählt er Stream 1 als Ziel aus, da dieser Stream die größte Bildgröße aufweist. Es dehnt Stream 0 auf eine Bildgröße von 1024 x 576 Pixel. Beachten Sie, dass in diesem Fall das zusammengesetzte Bild einen PAR von 1:1 aufweist, sodass der Zuweisungs-Referenten nicht für nicht quadratische Pixel korrigieren muss. (Möglicherweise muss das Video noch gestreckt werden, um das Zielrechteck zu berücksichtigen.)
Verwenden des nicht quadratischen Mischmodus
Der nicht quadratische Mischmodus wird empfohlen, wenn eine der folgenden Bedingungen zutrifft:
- Ihre Anwendung sendet nie mehr als einen Videostream an vmR-9.
- Ihre Anwendung rendert DVD-, Fernseh- oder ms-dvr-Dateien. Sie sollten in diesem Fall auch den YUV-Mischmodus verwenden, wenn ihn die Grafikhardware unterstützt.
Wenn Ihre Anwendung mehrere Videostreams mit unterschiedlichen Bildgrößen oder Pixelseitenverhältnissen kombiniert, wird der standardmäßige quadratische Mischmodus empfohlen.
Zum Konfigurieren des nicht quadratischen Mischmodus muss das Filterdiagramm beendet werden, und alle Eingabestifte müssen auf der VMR-9 getrennt werden. Rufen Sie dann IVMRMixerControl9::SetMixingPrefs mit dem MixerPref9_NonSquareMixing-Flag auf:
DWORD dwPrefs;
pMixControl->GetMixingPrefs(&dwPrefs);
dwPrefs |= MixerPref9_NonSquareMixing;
pMixControl->SetMixingPrefs(dwPrefs);
Hinweis
Wenn Sie das MixerPref9_NonSquareMixing-Flag mit dem MixerPref9_ARAdjustXorY-Flag kombinieren, ignoriert VMR-9 das MixerPref9_ARAdjustXorY-Flag.
Wenn Ihre Anwendung einen benutzerdefinierten Zuteilungs-Presenter mit nicht quadratischem Mischmodus verwendet, sollten Sie beachten, dass das zusammengesetzte Bild möglicherweise eine nicht quadratische PAR-Instanz aufweist. Der Zuteilungs-Referenten muss das Bild auf ein quadratisches PAR (1:1) skalieren.
Statische Bitmaps
Wenn Sie die IVMRMixerBitmap9-Schnittstelle verwenden, um eine statische Bitmap mit dem Video zu mischen, sollten Sie die Bitmap als zweiten Videostream für zwecke des VMR-Mischmodus betrachten.
Die VMR behandelt die Bitmap mit dem gleichen PAR wie das Ziel. Die Bitmap wird nicht skaliert, um das Pixelseitenverhältnis des Ziels anzupassen. In der Standardkonfiguration der VMR weist das Ziel eine 1:1-PAR-Instanz auf, die den meisten Bitmaps entspricht. Im nicht quadratischen Mischmodus kann das Ziel nicht quadratische Pixel aufweisen. Um sicherzustellen, dass die Bitmap ordnungsgemäß angezeigt wird, sollte die Anwendung ein Bild bereitstellen, dessen PAR mit dem Ziel-PAR übereinstimmt.
Zugehörige Themen