IMFMediaStream::RequestSample 方法 (mfidl.h)
從媒體來源要求範例。
語法
HRESULT RequestSample(
[in] IUnknown *pToken
);
參數
[in] pToken
IUnknown 介面的指標,指向做為要求令牌的物件。 呼叫端必須實作這個物件。 此參數可以是 Null。 請參閱<備註>。
傳回值
方法會傳回 HRESULT。 可能的值包括 (但不限於) 下表中的這些值。
傳回碼 | 描述 |
---|---|
|
此方法已成功。 |
|
已到達數據流結尾。 |
|
媒體來源已停止。 |
|
已呼叫來源的 Shutdown 方法。 |
備註
如果 pToken 不是 NULL,媒體數據流會在 pToken 上呼叫 AddRef,並將令牌放在先進先出佇列中。
當下一個範例可供使用時,媒體串流會執行下列動作:
- 從佇列提取第一個令牌。
- 設定媒體範例上的 MFSampleExtension_Token 屬性。 屬性數據是 Token 物件的指標。
- 傳送 MEMediaSample 事件。 事件數據是媒體範例 之 IMFSample 介面的指標。
- 在令牌上呼叫 Release 。
呼叫端應該監視要求令牌上的參考計數。 如果媒體串流傳送 MEMediaSample 事件,請從範例取得 MFSampleExtension_Token 屬性,並將屬性值與令牌相符。 如果令牌的參考計數落為零,而且您未收到MEMediaSample事件,表示要求已卸除。
因為 Media Foundation 管線是多線程的,所以來源的 RequestSample 方法可能會在來源停止之後呼叫。 如果媒體來源已停止,方法應該會 傳回MF_E_MEDIA_SOURCE_WRONGSTATE。 管線不會將此傳回碼視為錯誤狀況。 如果來源傳回任何其他錯誤碼,管線會將它視為嚴重錯誤並停止會話。
注意 舊版的檔列出此案例的錯誤碼。
如果媒體來源已暫停,方法會成功,但數據流不會傳遞範例,直到再次啟動來源為止。
如果媒體來源在處理數據時以異步方式發生錯誤,它應該以下列其中一種方式發出錯誤訊號, (但兩者都) :
- 從下一個 RequestSample 呼叫傳回錯誤碼。
- 傳送 MEError 事件。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | mfidl.h |
程式庫 | Mfuuid.lib |