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。 可能的值包括 (但不限於) 下表中的這些值。
傳回碼 | 描述 |
---|---|
|
此方法已成功。 |
|
MFT 沒有可用的輸入類型清單。 |
|
無效的數據流標識碼。 |
|
dwTypeIndex 參數超出範圍。 |
|
您必須先設定輸出類型,才能設定輸入類型。 |
備註
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 |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應