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
S_OK
Die Methode wurde erfolgreich ausgeführt.
E_NOTIMPL
Die MFT verfügt nicht über eine Liste der verfügbaren Ausgabetypen.
MF_E_INVALIDSTREAMNUMBER
Ungültiger Streambezeichner.
MF_E_NO_MORE_TYPES
Der dwTypeIndex-Parameter liegt außerhalb des Bereichs.
MF_E_TRANSFORM_TYPE_NOT_SET
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:

  1. 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.
  2. Der Client wählt einen dieser Typen (in der Regel den ersten) aus und legt ihn für den Ausgabestream fest.
  3. Der Client liefert das erste Eingabebeispiel, indem er IMFTransform::P rocessInput aufruft.
  4. 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.
  5. Ruft GetOutputAvailableType erneut auf. An diesem Punkt sollte die Methode eine aktualisierte Liste von Typen zurückgeben, die die Eingabedaten widerspiegelt.
  6. Der Client wählt einen neuen Ausgabetyp aus dieser Liste aus und ruft SetOutputType auf.
Wenn MFT_UNIQUE_METHOD_NAMES vor dem Einschließen von mftransform.h definiert ist, wird diese Methode in MFTGetOutputAvailableType umbenannt. Weitere Informationen finden Sie unter Erstellen von DMO/MFT-Hybridobjekten.

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

IMFTransform

Media Foundation-Transformationen