CMediaSample 類別
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
類別 CMediaSample
會定義支援 IMediaSample2 介面的媒體範例。 媒體範例包含記憶體緩衝區的指標,以及儲存為受保護成員變數的各種屬性。
媒體範例是由配置器所建立,其衍生自 CBaseAllocator 類別。 建 CMediaSample
構函式會接收已配置緩衝區的指標,以及緩衝區的大小。 其他屬性通常會透過 IMediaSample 介面方法來設定和擷取。
媒體範例的生命週期與大部分 COM 物件的生命週期不同:
- 配置器會保存免費範例清單。 篩選準則需要新的範例時,它會呼叫配置器的 IMemAllocator::GetBuffer 方法。 配置器會從其可用清單中擷取樣本、遞增樣本的參考計數,並傳回樣本的指標。
- 使用範例完成篩選之後,它會在範例上呼叫 IUnknown::Release 方法。 不同于大部分的物件,當樣本的參考計數達到零時,不會刪除本身。 相反地,它會在配置器上呼叫 IMemAllocator::ReleaseBuffer 方法,而配置器會將範例傳回至其免費清單。
- 配置器不會終結樣本,直到呼叫 IMemAllocator::D ecommit 方法為止。
受保護的成員變數 | Description |
---|---|
m_dwFlags | 範例屬性旗標。 |
m_dwTypeSpecificFlags | 特定類型旗標。 |
m_pBuffer | 包含媒體資料的記憶體緩衝區指標。 |
m_lActual | 緩衝區中有效資料的長度,以位元組為單位。 |
m_cbBuffer | 緩衝區的大小,以位元組為單位。 |
m_pAllocator | 建立這個範例的配置器的指標。 |
m_pNext | 配置器範例清單中的下一個範例指標。 |
m_Start | 範例開始時間。 |
m_End | 範例結束時間。 |
m_MediaStart | 媒體開始時間。 |
m_MediaEnd | 媒體停止時間。 |
m_pMediaType | 如果類型已從資料流程中的上一個範例變更,則為媒體類型的指標。 |
m_dwStreamId | 資料流程識別碼。 |
公用成員變數 | Description |
m_cRef | 參考計數。 |
公用方法 | Description |
CMediaSample | 建構函式方法。 |
~ CMediaSample | 解構函式方法。 虛擬。 |
SetPointer | 設定記憶體緩衝區的指標。 |
IMediaSample 方法 | Description |
GetPointer | 擷取緩衝區的讀取/寫入指標。 |
GetSize | 擷取緩衝區的大小。 |
GetTime | 擷取此範例應該開始和完成的資料流程時間。 |
SetTime | 設定此範例應該開始和完成的資料流程時間。 |
IsSyncPoint | 判斷樣本的開頭是否為同步處理點。 |
SetSyncPoint | 指定這個範例的開頭是否為同步處理點。 |
IsPreroll | 判斷此範例是否為預先註冊範例。 |
SetPreroll | 指定此範例是否為預先註冊範例。 |
GetActualDataLength | 擷取緩衝區中有效資料的長度。 |
SetActualDataLength | 設定緩衝區中有效資料的長度。 |
GetMediaType | 如果媒體類型與先前的範例不同,則擷取媒體類型。 |
SetMediaType | 設定範例的媒體類型。 |
IsDiscontinuity | 判斷這個範例是否代表資料流程中的中斷。 |
SetDiscontinuity | 指定這個範例是否代表資料流程中的中斷。 |
GetMediaTime | 擷取這個範例的媒體時間。 |
SetMediaTime | 設定這個範例的媒體時間。 |
IMediaSample2 方法 | Description |
GetProperties | 擷取範例的屬性。 |
SetProperties | 設定範例的屬性。 |
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|