CMediaSample クラス
CMediaSample クラスは、IMediaSample2 インターフェイスをサポートするメディア サンプルを定義する。メディア サンプルはメモリ バッファへのポインタと、プロテクト メンバ変数に格納されているいくつかのプロパティを持つ。
メディア サンプルは CBaseAllocator クラスから派生するアロケータによって作成される。CMediaSample コンストラクタはバッファ サイズと共にアロケータ バッファへのポインタを受け取る。他のプロパティは通常 IMediaSample インターフェイス メソッドを通して設定または取得される。
メディア サンプルのライフ サイクルはほとんどの COM オブジェクトのライフ サイクルとは異なる。
- アロケータはフリー サンプルのリストを保持する。フィルタが新しいサンプルを必要とするとき、アロケータの IMemAllocator::GetBuffer メソッドを呼び出す。アロケータはそのフリー リストからサンプルを取得し、そのサンプルの参照カウントをインクリメントし、そのサンプルのポインタを返す。
- フィルタがサンプルでの処理を終了したとき、サンプルの IUnknown::Release メソッドを呼び出す。ほとんどのオブジェクトとは異なり、参照カウントがゼロになってもサンプルは自身を削除しない。その代わりに、アロケータの IMemAllocator::ReleaseBuffer メソッドを呼び出して、アロケータはフリー リストにそのサンプルを返す。
- アロケータは IMemAllocator::Decommit が呼び出されるまでサンプルを削除しない。
要件
ヘッダー: Amfilter.h で宣言し、Streams.h をインクルードする。
ライブラリ: Strmbase.lib (リテール ビルド) または Strmbasd.lib (デバッグ ビルド)。
プロテクト メンバ変数 | |
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 | ストリーム識別子。 |
パブリック メンバ変数 | |
m_cRef | 参照カウント。 |
パブリック メソッド | |
CMediaSample | コンストラクタ メソッド。 |
~CMediaSample | デストラクタ メソッド。仮想。 |
SetPointer | メモリ バッファへのポインタを設定する。 |
IMediaSample メソッド | |
GetPointer | バッファの読み込み/書き込みポインタを取得する。 |
GetSize | バッファのサイズを取得する。 |
GetTime | サンプルが開始および終了すべきストリーム タイムを取得する。 |
SetTime | サンプルが開始および終了するストリーム タイムを設定する。 |
IsSyncPoint | サンプルの開始が同期ポイントかどうかを調べる。 |
SetSyncPoint | サンプルの始まりが同期ポイントかどうかを指定する。 |
IsPreroll | サンプルがプリロール サンプルかどうかを調べる。 |
SetPreroll | サンプルがプリロール サンプルかどうかを指定する。 |
GetActualDataLength | バッファ内の有効なデータの長さを取得する。 |
SetActualDataLength | バッファ内の有効なデータの長さを設定する。 |
GetMediaType | メディア タイプが前のサンプルと異なる場合、メディア タイプを取得する。 |
SetMediaType | サンプルのメディア タイプを設定する。 |
IsDiscontinuity | このサンプルがデータ ストリーム内でブレークを表示するかどうかを確認する。 |
SetDiscontinuity | このサンプルがデータ ストリーム内でブレークを表示するかどうかを指定する。 |
GetMediaTime | このサンプルのメディア タイムを取得する。 |
SetMediaTime | このサンプルのメディア タイムを設定する。 |
IMediaSample2 メソッド | |
GetProperties | サンプルのプロパティを取得する。 |
SetProperties | サンプルのプロパティを設定する。 |