EVR-Medientypaushandlung
In diesem Thema wird beschrieben, wie der erweiterte Videorenderer (EVR) Medientypen überprüft.
Für den DirectShow EVR-Filter erfolgt die Typaushandlung, wenn die Pins des Filters verbunden sind.
Für die EVR-Mediensenke werden die Medientypen über die INTERFACESMediaTypeHandler-Schnittstelle in den Streamsenken festgelegt. In der Regel handelt das Topologieladeprogramm die Medientypen aus, obwohl die Anwendung die Medientypen auch direkt festlegen kann.
Die EVR meldet keine bevorzugten Medientypen. Der Client muss Medientypen testen, bis ein akzeptabler Typ gefunden wird. Der Medientyp für den Verweisstream muss festgelegt werden, bevor die Typen für einen der Unterstreams festgelegt werden können.
Für den Verweisstream ruft der EVR-Mixer eine Liste kompatibler DXVA-Renderzielformate (DirectX Video Acceleration) ab. Die EVR-Moderatorin verwendet diese Liste, um das Format für die Direct3D-Swapkette auszuwählen. Wenn kein kompatibles Renderzielformat gefunden werden kann, lehnt die EVR den Medientyp ab.
Für die Unterstreams fragt der EVR-Mixer ab, ob das DXVA-Gerät dieses Unterstreamformat in Kombination mit dem Renderzielformat unterstützt, das für den Verweisstream ausgewählt wurde. Daher können sich die verfügbaren Unterstreamformate je nach Verweisstream ändern.
Hier ist der Prozess ausführlicher. Diese Details sind für die meisten Anwendungen nicht wichtig, können aber hilfreich sein, wenn Sie einen benutzerdefinierten Mixer oder Presenter schreiben.
Für den Verweisstream erfolgt die Aushandlung wie folgt:
Der EVR ruft AUFTRANSFORM::SetInputType auf dem Mixer auf.
Der Mixer konvertiert den Medientyp unter Verwendung der DXVA2 _ VideoDesc-Struktur in eine DXVA 2.0-Beschreibung.
Der Mixer ruft IDirectXVideoProcessorService::GetVideoProcessorDeviceGuids auf, um eine Liste der Videoprozessor-GUIDs abzurufen.
Für jede Videoprozessor-GUID ruft der Mixer IDirectXVideoProcessorService::GetVideoProcessorRenderTargets auf, um die unterstützten Renderzielformate abzurufen.
Der EVR ruft AUFANZEIGEVideoPresenter::P rocessMessage auf dem Presenter mit der _ MFVP MESSAGE _ INVALIDATEMEDIATYPE-Nachricht auf. Diese Meldung bewirkt, dass die Präsentation ein neues Format auswählt.
Der Presenter ruft DIE AUSGABETRANSFORM::GetOutputAvailableType auf, um eine Liste der verfügbaren Ausgabeformate vom Mixer abzurufen. Der Mixer generiert diese Liste aus den in Schritt 4 abgerufenen Formaten.
Der Presenter wählt ein Format aus und ruft AUFTRANSFORM::SetOutputType auf dem Mixer auf.
Bei Unterstreams ist der Prozess einfacher:
Der EVR ruft AUFTRANSFORM::SetInputType auf dem Mixer auf.
Der Mixer ruft IDirectXVideoProcessorService::GetVideoProcessorSubStreamFormats auf, um eine Liste der verfügbaren Unterstreamformate abzurufen.
Wenn das vorgeschlagene Format in dieser Liste enthalten ist, akzeptiert die EVR den Eingabetyp.