共用方式為


CMediaSample 類別

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

cmediasample 類別階層

類別 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 設定範例的屬性。

規格需求

需求
標頭
Amfilter.h (包含 Streams.h)
程式庫
Strmbase.lib (零售組建) ;
Strmbasd.lib (偵錯組建)