IMFTransform::GetOutputAvailableType-Methode (mftransform.h)
Ruft einen verfügbaren Medientyp für einen Ausgabestream für diese Media Foundation-Transformation (MFT) ab.
Syntax
HRESULT GetOutputAvailableType(
[in] DWORD dwOutputStreamID,
[in] DWORD dwTypeIndex,
[out] IMFMediaType **ppType
);
Parameter
[in] dwOutputStreamID
Ausgabedatenstrombezeichner. Um die Liste der Streambezeichner abzurufen, rufen Sie IMFTransform::GetStreamIDs auf.
[in] dwTypeIndex
Index des abzurufenden Medientyps. Medientypen werden von null indiziert und in ungefährer Reihenfolge der Einstellung zurückgegeben.
[out] ppType
Empfängt einen Zeiger auf die IMFMediaType-Schnittstelle . Der Aufrufer muss die Schnittstelle freigeben.
Rückgabewert
Die Methode gibt ein HRESULT zurück. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Die Methode wurde erfolgreich ausgeführt. |
|
Die MFT verfügt nicht über eine Liste der verfügbaren Ausgabetypen. |
|
Ungültiger Streambezeichner. |
|
Der dwTypeIndex-Parameter liegt außerhalb des Bereichs. |
|
Sie müssen die Eingabetypen festlegen, bevor Sie die Ausgabetypen festlegen. |
Hinweise
Der MFT definiert eine Liste der verfügbaren Medientypen für jeden Ausgabestream und sortiert diese nach Präferenz. Diese Methode listet die verfügbaren Medientypen für einen Ausgabestream auf. Um die verfügbaren Typen aufzulisten, erhöhen Sie dwTypeIndex , bis die Methode MF_E_NO_MORE_TYPES zurückgibt.
Wenn Sie den Medientyp für einen Stream festlegen, können Sie die verfügbaren Typen für einen anderen Stream ändern (oder die Einstellungsreihenfolge ändern). Ein MFT ist jedoch nicht erforderlich, um die Liste der verfügbaren Typen dynamisch zu aktualisieren. Die einzige garantierte Möglichkeit zum Testen, ob Sie einen bestimmten Eingabetyp festlegen können, ist das Aufrufen von IMFTransform::SetOutputType.
In einigen Fällen kann ein MFT erst dann eine Liste von Ausgabetypen zurückgeben, wenn mindestens ein Eingabetyp festgelegt ist. Wenn ja, gibt die Methode MF_E_TRANSFORM_TYPE_NOT_SET zurück.
Zum Implementieren dieser Methode ist kein MFT erforderlich. Die meisten MFTs sollten diese Methode jedoch implementieren, es sei denn, die unterstützten Typen sind einfach und können über die MFTGetInfo-Funktion ermittelt werden.
Diese Methode kann einen teilweisen Medientyp zurückgeben. Ein partieller Medientyp enthält eine unvollständige Beschreibung eines Formats und wird verwendet, um dem Aufrufer einen Hinweis zu geben. Ein Partieller Typ kann beispielsweise nur die Haupttyp- und Untertyp-GUIDs enthalten. Nachdem der Client jedoch die Eingabetypen für den MFT festgelegt hat, sollte der MFT in der Regel mindestens einen vollständigen Ausgabetyp zurückgeben, der ohne weitere Änderung verwendet werden kann. Weitere Informationen finden Sie unter Vollständige und partielle Medientypen.
Einige MFTs können erst dann eine genaue Liste der Ausgabetypen bereitstellen, wenn der MFT das erste Eingabebeispiel empfängt. Beispielsweise muss der MFT möglicherweise den ersten Paketheader lesen, um das Format abzuleiten. Ein MFT sollte diese Situation wie folgt behandeln:
- Bevor der MFT eine Eingabe empfängt, bietet er eine Liste mit einem oder mehreren Ausgabetypen, die möglicherweise erzeugt werden könnten. Beispielsweise kann ein MPEG-2-Decoder einen Medientyp zurückgeben, der die MPEG-2-Standard Profil-/Standard-Ebene beschreibt.
- Der Client wählt einen dieser Typen (in der Regel den ersten) aus und legt ihn für den Ausgabestream fest.
- Der Client liefert das erste Eingabebeispiel, indem er IMFTransform::P rocessInput aufruft.
- Wenn der Ausgabetyp nicht mit den Eingabedaten übereinstimmt, signalisiert die Transformation eine Formatänderung in der ProcessOutput-Methode . Weitere Informationen zu Formatänderungen finden Sie unter IMFTransform::P rocessOutput.
- Ruft GetOutputAvailableType erneut auf. An diesem Punkt sollte die Methode eine aktualisierte Liste von Typen zurückgeben, die die Eingabedaten widerspiegelt.
- Der Client wählt einen neuen Ausgabetyp aus dieser Liste aus und ruft SetOutputType auf.
Implementierungshinweise
Wenn der MFT einen Medientyp intern speichert, sollte der MFT einen Klon des Medientyps zurückgeben, nicht einen Zeiger auf den ursprünglichen Typ. Andernfalls kann der Aufrufer den Typ ändern und den internen Zustand des MFT ändern.Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | mftransform.h |
Bibliothek | Mfuuid.lib |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für