IMFTransform::GetInputAvailableType 方法 (mftransform.h)

取得此 Media Foundation 轉換 (MFT) 之輸入數據流的可用媒體類型。

語法

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

參數

[in] dwInputStreamID

輸入數據流識別碼。 若要取得串流標識符的清單,請呼叫 IMFTransform::GetStreamIDs

[in] dwTypeIndex

要擷取之媒體類型的索引。 媒體類型會從零編製索引,並以喜好設定的近似順序傳回。

[out] ppType

接收 IMFMediaType 介面的指標。

傳回值

方法會傳回 HRESULT。 可能的值包括 (但不限於) 下表中的這些值。

傳回碼 描述
S_OK
此方法已成功。
E_NOTIMPL
MFT 沒有可用的輸入類型清單。
MF_E_INVALIDSTREAMNUMBER
無效的數據流標識碼。
MF_E_NO_MORE_TYPES
dwTypeIndex 參數超出範圍。
MF_E_TRANSFORM_TYPE_NOT_SET
您必須先設定輸出類型,才能設定輸入類型。

備註

MFT 會為每個輸入數據流定義可用的媒體類型清單,並依喜好設定加以排序。 這個方法會列舉輸入數據流的可用媒體類型。 若要列舉可用的類型,請遞增 dwTypeIndex ,直到方法傳回 MF_E_NO_MORE_TYPES為止。

在一個數據流上設定媒體類型可能會變更另一個數據流的可用類型,或變更喜好設定順序。 不過,動態更新可用類型的清單不需要 MFT。 測試是否可以設定特定輸入類型的唯一保證方法是呼叫 IMFTransform::SetInputType

在某些情況下,MFT 無法傳回輸入類型清單,直到設定一或多個輸出類型為止。 如果是,方法會 傳回MF_E_TRANSFORM_TYPE_NOT_SET

實作此方法不需要 MFT。 不過,除非支持的類型很簡單,而且可以透過 MFTGetInfo 函式來探索,否則大部分 MFT 都應該實作這個方法。

如果在包含 mftransform.h 之前定義 MFT_UNIQUE_METHOD_NAMES ,這個方法會重新命名 為 MFTGetInputAvailableType。 請參閱 建立混合式 DMO/MFT 物件

針對編碼器,設定輸出類型之後, GetInputAvailableType 必須傳回與目前輸出類型相容的輸入類型清單。 這表示在設定輸出類型之後 ,GetInputAvailableType 所傳回的所有類型都必須是 SetInputType 的有效類型。

如果輸入媒體類型和輸出媒體類型的屬性不相符,編碼器應該拒絕輸入類型,例如具有 MF_MT_FRAME_SIZE的解析度設定、具有 MF_MT_VIDEO_NOMINAL_RANGE的標稱範圍設定,或具有 MF_MT_FRAME_SIZE的幀速率設定

實作注意事項

如果 MFT 在內部儲存媒體類型,MFT 應該會傳回媒體類型的複製品,而不是原始類型的指標。 否則,呼叫端可能會修改類型,並改變 MFT 的內部狀態。

規格需求

需求
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 mftransform.h
程式庫 Mfuuid.lib

另請參閱

IMFTransform

媒體基礎轉換