ISampleGrabber::GetCurrentBuffer 方法
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
注意
[已被取代。 此 API 可能會從未來的 Windows 版本中移除。]
GetCurrentBuffer方法會擷取與最近範例相關聯的緩衝區複本。
語法
HRESULT GetCurrentBuffer(
[in, out] long *pBufferSize,
[out] long *pBuffer
);
參數
-
pBufferSize [in, out]
-
緩衝區大小的指標。 如果 pBuffer 為 Null,此參數會接收所需的緩衝區大小,以位元組為單位。 如果 pBuffer 不是 Null,請將此參數設定為等於緩衝區的大小,以位元組為單位。 在輸出時,參數會接收復制到緩衝區的位元組數目。 此值可能小於緩衝區的大小。
-
pBuffer [out]
-
pBufferSize或Null位元組陣列的指標。 如果此參數不是 Null,則目前的緩衝區會複製到陣列中。 如果此參數為 Null, pBufferSize 參數會收到所需的緩衝區大小。
傳回值
傳回下列其中一個值。
傳回碼 | Description |
---|---|
|
未緩衝處理範例。 呼叫 ISampleGrabber::SetBufferSamples。 |
|
指定的緩衝區不夠大。 |
|
Null 指標引數。 |
|
成功。 |
|
篩選準則未連線。 |
|
篩選尚未收到任何範例。 若要傳遞範例,請執行或暫停圖形。 |
備註
若要啟用緩衝處理,請使用TRUE值呼叫ISampleGrabber::SetBufferSamples。
呼叫這個方法兩次。 在第一次呼叫時,將 pBuffer 設定為 Null。 緩衝區的大小會以 pBufferSize傳回。 然後配置陣列,然後再次呼叫 方法。 第二次呼叫時,傳遞 pBufferSize中的陣列大小,並在 pBuffer中傳遞陣列的位址。 如果陣列不夠大,方法會傳回E_OUTOFMEMORY。
pBuffer參數的類型為長指標,但緩衝區的內容取決於資料的格式。 呼叫 ISampleGrabber::GetConnectedMediaType 以取得格式的媒體類型。
當篩選圖表正在執行時,請勿呼叫這個方法。 當篩選圖表正在執行時,範例抓取器篩選準則會在收到新的樣本時覆寫緩衝區的內容。 使用此方法的最佳方式是使用「單次模式」,這會在收到第一個樣本之後停止圖形。 若要設定單次模式,請呼叫 ISampleGrabber::SetOneShot。
篩選不會緩衝預先註冊範例,或AM_SAMPLE2_PROPERTIES結構之 dwStreamId成員不是AM_STREAM_MEDIA以外的任何範例。
注意
標頭檔 Qedit.h 與 7 版之後的 Direct3D 標頭不相容。
注意
若要取得 Qedit.h,請下載適用于 Windows Vista 的 Microsoft Windows SDK Update 和 .NET Framework 3.0。 Windows 7 和 .NET Framework 3.5 Service Pack 1 Microsoft Windows SDK中無法使用 Qedit.h。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|
另請參閱