IMFTransform::GetInputAvailableType-Methode (mftransform.h)

Ruft einen verfügbaren Medientyp für einen Eingabedatenstrom für diese Media Foundation-Transformation (MFT) ab.

Syntax

HRESULT GetInputAvailableType(
  [in]  DWORD        dwInputStreamID,
  [in]  DWORD        dwTypeIndex,
  [out] IMFMediaType **ppType
);

Parameter

[in] dwInputStreamID

Eingabedatenstrombezeichner. Um die Liste der Streambezeichner abzurufen, rufen Sie IMFTransform::GetStreamIDs auf.

[in] dwTypeIndex

Index des abzurufenden Medientyps. Medientypen werden ab 0 (null) indiziert und in der ungefähren Reihenfolge der Einstellung zurückgegeben.

[out] ppType

Empfängt einen Zeiger auf die IMFMediaType-Schnittstelle .

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
Das MFT verfügt nicht über eine Liste der verfügbaren Eingabetypen.
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 Ausgabetypen festlegen, bevor Sie die Eingabetypen festlegen.

Hinweise

Der MFT definiert eine Liste der verfügbaren Medientypen für jeden Eingabedatenstrom und ordnet sie nach Präferenz an. Diese Methode listet die verfügbaren Medientypen für einen Eingabedatenstrom auf. Um die verfügbaren Typen aufzulisten, erhöhen Sie dwTypeIndex , bis die Methode MF_E_NO_MORE_TYPES zurückgibt.

Das Festlegen des Medientyps für einen Stream kann 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::SetInputType.

In einigen Fällen kann ein MFT erst dann eine Liste von Eingabetypen zurückgeben, wenn mindestens ein Ausgabetyp 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.

Wenn MFT_UNIQUE_METHOD_NAMES vor dem Einschließen von mftransform.h definiert ist, wird diese Methode in MFTGetInputAvailableType umbenannt. Weitere Informationen finden Sie unter Erstellen von DMO/MFT-Hybridobjekten.

Nach dem Festlegen des Ausgabetyps für Encoder muss GetInputAvailableType eine Liste von Eingabetypen zurückgeben, die mit dem aktuellen Ausgabetyp kompatibel sind. Dies bedeutet, dass alle Typen, die von GetInputAvailableType zurückgegeben werden, nachdem der Ausgabetyp festgelegt wurde, gültige Typen für SetInputType sein müssen.

Encoder sollten Eingabetypen ablehnen, wenn die Attribute des Eingabemedientyps und des Ausgabemedientyps nicht übereinstimmen, z. B. Auflösungseinstellung mit MF_MT_FRAME_SIZE, Einstellung des nominalen Bereichs mit MF_MT_VIDEO_NOMINAL_RANGE oder Einstellung der Bildfrequenz mit MF_MT_FRAME_SIZE

Implementierungshinweise

Wenn der MFT einen Medientyp intern speichert, sollte der MFT einen Klon des Medientyps und keinen Zeiger auf den ursprünglichen Typ zurückgeben. 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