IMFTransform::GetStreamIDs 方法 (mftransform.h)

取得此 Media Foundation 轉換上輸入和輸出資料流程的資料流程識別碼, (MFT) 。

語法

HRESULT GetStreamIDs(
  [in]  DWORD dwInputIDArraySize,
  [out] DWORD *pdwInputIDs,
  [in]  DWORD dwOutputIDArraySize,
  [out] DWORD *pdwOutputIDs
);

參數

[in] dwInputIDArraySize

pdwInputIDs陣列中的元素數目。

[out] pdwInputIDs

呼叫端所配置的陣列指標。 方法會將陣列填入輸入資料流程識別碼。 陣列大小至少必須等於輸入資料流程的數目。 若要取得輸入資料流程的數目,請呼叫 IMFTransform::GetStreamCount

如果呼叫端傳遞大於輸入資料流程數目的陣列,MFT 不得將值寫入額外的陣列專案。

[in] dwOutputIDArraySize

pdwOutputIDs陣列中的元素數目。

[out] pdwOutputIDs

呼叫端所配置的陣列指標。 方法會以輸出資料流程識別碼填入陣列。 陣列大小至少必須等於輸出資料流程的數目。 若要取得輸出資料流程的數目,請呼叫 GetStreamCount

如果呼叫端傳遞大於輸出資料流程數目的陣列,MFT 不得將值寫入額外的陣列專案。

傳回值

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

傳回碼 描述
S_OK
此方法已成功。
E_NOTIMPL
未實作。 請參閱<備註>。
MF_E_BUFFERTOOSMALL
其中一或兩個數組太小。

備註

串流識別碼是必要的,因為某些 MFT 可以新增或移除資料流程,因此資料流程的索引可能不是唯一的。 因此,在資料流程上運作的 IMFTransform 方法會採用資料流程識別碼。

如果下列兩個條件都成立,這個方法可以傳回 E_NOTIMPL

  • 轉換具有固定數目的資料流程。
  • 資料流程會連續從 0 到 n – 1 編號,其中 n 是輸入資料流程或輸出資料流程的數目。 換句話說,第一個輸入資料流程是 0、第二個是 1,依此類故;而第一個輸出資料流程是 0,第二個則是 1,依此類故。
如果下列任一條件成立,就必須實作這個方法:
  • MFT 可以新增或移除輸出資料流程。
  • MFT 可讓用戶端新增或移除輸入資料流程。
  • 資料流程識別碼不連續。
所有輸入資料流程識別碼都必須在 MFT 內是唯一的,而且所有輸出資料流程識別碼都必須是唯一的。 不過,輸入資料流程和輸出資料流程可以共用相同的識別碼。

如果用戶端新增輸入資料流程,則用戶端會指派識別碼,因此 MFT 必須允許任意識別碼,只要它們是唯一的。 如果 MFT 建立輸出資料流程,MFT 會指派識別碼。

根據慣例,如果 MFT 只有一個固定輸入資料流程和一個固定輸出資料流程,它應該將識別碼 0 指派給這兩個數據流。

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

需求

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

另請參閱

IMFTransform

媒體基礎轉換