IMFMediaEngineExtension::BeginCreateObject 方法 (mfmediaengine.h)
開始非同步要求,以建立位元組資料流程或媒體來源。
語法
HRESULT BeginCreateObject(
[in] BSTR bstrURL,
[in] IMFByteStream *pByteStream,
[in] MF_OBJECT_TYPE type,
[out] IUnknown **ppIUnknownCancelCookie,
[in] IMFAsyncCallback *pCallback,
[in, optional] IUnknown *punkState
);
參數
[in] bstrURL
媒體資源的 URL。
[in] pByteStream
IMFByteStream介面的指標。
如果 類型 參數等於 MF_OBJECT_BYTESTREAM,則此參數為 Null。
如果 type 等於 MF_OBJECT_MEDIASOURCE,這個參數會包含位元組資料流程的指標或 為 Null。 如需詳細資訊,請參閱「備註」。
[in] type
MF_OBJECT_TYPE列舉的成員,指定要建立的物件類型。
值 | 意義 |
---|---|
|
建立位元組資料流程。 位元組資料流程必須支援 IMFByteStream 介面。 |
|
建立媒體來源。 媒體來源必須支援 IMFMediaSource 介面。 |
[out] ppIUnknownCancelCookie
接收 IUnknown 介面的指標。 這個指標可用來取消非同步作業,方法是將指標傳遞至 IMFMediaEngineExtension::CancelObjectCreation 方法。
呼叫端必須釋放 介面。 此參數可以是 Null。
[in] pCallback
IMFAsyncCallback介面的指標。 這個介面是用來發出非同步作業完成的訊號。
[in, optional] punkState
呼叫端實作之物件的 IUnknown 介面指標。 您可以使用這個物件來保存回呼的狀態資訊。 叫用回呼時,物件會傳回給呼叫端。 此參數可以是 Null。
傳回值
如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
備註
這個方法會要求 物件建立位元組資料流程或媒體來源,視 類型 參數的值而定:
- 如果 type是MF_OBJECT_BYTESTREAM,方法會為 bstrURL中指定的 URL 建立位元組資料流程。 在此情況下, pByteStream 參數為 Null。
- 如果 type是MF_OBJECT_MEDIASOURCE,方法會使用 pByteStream 參數中指定的位元組資料流程來建立媒體來源。 請注意,在此情況下 ,pByteStream 也可以是 Null 。
實作注意事項
媒體引擎擴充功能可用來支援自訂位元組資料流程物件、自訂媒體來源或兩者。 針對位元組資料流程,當 類型 等於 MF_OBJECT_BYTESTREAM時,建立位元組資料流程物件。 針對媒體來源,當類型等於 MF_OBJECT_MEDIASOURCE時,請建立來源。若要載入 URL,媒體引擎會執行下列步驟:
- 嘗試從 URL 建立位元組資料流程。
- 如果成功建立位元組資料流程,請嘗試從位元組資料流程建立媒體來源。
- 如果無法建立位元組資料流程,請嘗試直接從 URL 建立媒體來源。
在每個步驟中,媒體引擎會在擴充物件上呼叫 IMFMediaEngineExtension::BeginCreateObject 。 如果 BeginCreateObject 方法失敗,媒體引擎會嘗試 來源解析程式。
在 BeginCreateObject 方法中,您可以選擇處理下列任一案例:
- 類型參數MF_OBJECT_BYTESTREAM。 從 URL 建立位元組資料流程。
- 類型參數MF_OBJECT_MEDIASOURCE,而 pByteStream會指向位元組資料流程。 使用位元組資料流程來建立媒體來源。
- 類型參數MF_OBJECT_MEDIASOURCEpByteStream為Null。 從 URL 建立媒體來源。
針對您未處理的任何情況,傳回失敗碼。
範例:
- 若要支援自訂媒體格式,請實作媒體來源。 如果媒體來源不需要任何特殊的位元組資料流程實作,請在類型為 MF_OBJECT_MEDIASOURCE且pByteStream為非Null時建立媒體來源。 在此案例中將會使用標準的 Microsoft Media Foundation 位元組資料流程實作。
- 若要支援自訂 URL 配置,請處理類型MF_OBJECT_BYTESTREAM的情況,並傳回能夠讀取 URL 的位元組資料流程物件。
如果 BeginCreateObject 方法成功,應該以非同步方式執行作業。 當作業完成時,請在pCallback中指定的回呼介面上呼叫IMFAsyncCallback::Invoke方法。 媒體引擎會呼叫 IMFMediaEngineExtension::EndCreateObject來完成作業。
需求
最低支援的用戶端 | Windows 8 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2012 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | mfmediaengine.h |