IMFTransform::P rocessInput 方法 (mftransform.h)

將數據傳遞到此媒體基礎轉換上的輸入數據流, (MFT) 。

語法

HRESULT ProcessInput(
  [in] DWORD     dwInputStreamID,
  [in] IMFSample *pSample,
  [in] DWORD     dwFlags
);

參數

[in] dwInputStreamID

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

[in] pSample

輸入範例之 IMFSample 介面的指標。 此範例至少必須包含一個包含有效輸入數據的媒體緩衝區。

[in] dwFlags

保留的。 必須為零。

傳回值

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

傳回碼 描述
S_OK
此方法已成功。
E_INVALIDARG
無效引數。
MF_E_INVALIDSTREAMNUMBER
無效的數據流標識碼。
MF_E_NO_SAMPLE_DURATION
輸入範例需要有效的樣本持續時間。 若要設定持續時間,請呼叫 IMFSample::SetSampleDuration

某些 MFT 需要輸入樣本具有有效的持續時間。 某些 MFT 不需要範例持續時間。

MF_E_NO_SAMPLE_TIMESTAMP
輸入範例需要時間戳。 若要設定時間戳,請呼叫 IMFSample::SetSampleTime

某些 MFT 要求輸入範例具有有效的時間戳。 某些 MFT 不需要時間戳。

MF_E_NOTACCEPTING
轉換目前無法處理更多輸入。
MF_E_TRANSFORM_TYPE_NOT_SET
媒體類型未在一或多個數據流上設定。
MF_E_UNSUPPORTED_D3D_TYPE
DirectX 視訊加速 (DXVA) 不支援媒體類型。 啟用 DXVA 的譯碼器可能會傳回此錯誤碼。
 
注意 如果您要將 DirectX 媒體物件 (DMO) 轉換成 MFT,請注意 ,S_FALSE 不是 IMFTransform::P rocessInput 的有效傳回碼,與 IMediaObject::P rocessInput 方法不同。
 

備註

在大部分情況下,如果方法成功,MFT 會儲存樣本,並在 IMFSample 指標上保留參考計數。 在 MFT 釋放範例之前,請勿重複使用範例。 不過,MFT 可能會將範例數據複製到新的緩衝區,而不是儲存範例。 在此情況下,MFT 應該在IMFTransform::GetInputStreamInfo 方法中設定MFT_INPUT_STREAM_DOES_NOT_ADDREF旗標。

如果 MFT 已經有足夠的輸入數據可產生輸出範例,則它不接受新的輸入數據, 而 ProcessInput傳回MF_E_NOTACCEPTING。 此時,客戶端應該執行下列其中一項來清除擱置的輸入數據:

此規則的例外狀況是 MFT_OUTPUT_STREAM_LAZY_READ 旗標。 當此旗標存在時,如果您提供更多輸入,轉換將會捨棄儲存的樣本。 如需詳細資訊,請參閱 IMFTransform::GetOutputStreamInfo。 轉換絕對不應該將所需的輸入數據排入佇列,才能產生正確的輸出。

MFT 可以處理 ProcessInput 方法中的輸入數據。 不過,大部分的 MFT 會等到用戶端呼叫 ProcessOutput 為止。

在用戶端在所有數據流上設定有效的媒體類型之後,MFT 應該一律處於兩種狀態之一:能夠接受更多輸入,或能夠產生更多輸出。 它不應該同時處於兩種狀態或兩種狀態。 MFT 應該只接受至少一個輸出範例所需的輸入,此時 ProcessInput 會傳回MF_E_NOTACCEPTING當 ProcessInput 傳回MF_E_NOTACCEPTING時,用戶端可以假設 MFT 已準備好產生輸出。

如果 MFT 在輸入數據中遇到非嚴重錯誤,它可以直接卸載數據,並在取得更多輸入數據時嘗試復原。 若要要求更多輸入數據,MFT 會從IMFTransform::P rocessOutput 方法傳回MF_E_TRANSFORM_NEED_MORE_INPUT。 如果 MFT 卸除任何數據,它應該在下一個輸出範例上設定 MFSampleExtension_Discontinuity 屬性屬性,以通知呼叫端數據流中有間距。

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

異步處理

先前的備註描述 同步 處理模型。 若要支援異步處理,請參閱 異步 MFT

規格需求

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

另請參閱

IMFTransform

媒體基礎轉換