CBaseAllocator.GetBuffer 方法
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
方法會 GetBuffer
擷取包含緩衝區的媒體範例。 這個方法會實作 IMemAllocator::GetBuffer 方法。
語法
HRESULT GetBuffer(
IMediaSample **ppBuffer,
REFERENCE_TIME *pStartTime,
REFERENCE_TIME *pEndTime,
DWORD dwFlags
);
參數
-
ppBuffer
-
接收緩衝區 IMediaSample 介面的指標。 呼叫端必須釋放 介面。
-
pStartTime
-
範例開始時間的指標。
-
pEndTime
-
範例結束時間的指標。
-
dwFlags
-
零個或多個旗標的位組合。 基類支援下列旗標。
值 意義 - AM_GBF_NOWAIT
請勿等候緩衝區可供使用。
傳回值
傳回下列其中一個 HRESULT 值。
傳回碼 | 描述 |
---|---|
|
成功。 |
|
配置器未認可。 |
|
逾時。 |
備註
除非呼叫端在dwFlags中指定AM_GBF_NOWAIT旗標,否則這個方法會封鎖直到下一個範例可用為止。
擷取的媒體範例具有已配置緩衝區的有效指標。 呼叫端負責在範例上設定任何其他屬性,例如時間戳記、媒體時間或同步點屬性。 如需詳細資訊,請參閱 IMediaSample。
在基類中, 會忽略 pStartTime 和 pEndTime 參數。 衍生類別可以使用這些值。 例如, 影片轉譯器 篩選的配置器會使用這些值來同步處理 DirectDraw 介面之間的切換。
如果方法需要等候樣本,它會遞增等候物件計數, (CBaseAllocator::m_lCount) ,並在旗號 (CBaseAllocator::m_hSem) 呼叫WaitForSingleObject函式。 當範例變成可用時,它會在配置器上呼叫 CBaseAllocator::ReleaseBuffer 方法,藉此將信號計數增加 m_lCount (藉此釋放等候執行緒) 並將 m_lCount 設定回零。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|