次の方法で共有


CMediaSample クラス

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

cmediasample クラス階層

クラスは CMediaSampleIMediaSample2 インターフェイスをサポートするメディア サンプルを定義します。 メディア サンプルには、メモリ バッファーへのポインターと、保護されたメンバー変数として格納されているさまざまなプロパティが含まれています。

メディア サンプルは、 CBaseAllocator クラスから派生したアロケーターによって作成されます。 コンストラクターは CMediaSample 、割り当てられたバッファーへのポインターとバッファーのサイズを受け取ります。 その他のプロパティは、通常 、IMediaSample インターフェイス メソッドを使用して設定および取得されます。

メディア サンプルのライフ サイクルは、ほとんどの COM オブジェクトとは異なります。

  • アロケーターには、無料のサンプルの一覧が保持されます。 フィルターで新しいサンプルが必要な場合は、アロケーターの IMemAllocator::GetBuffer メソッドを呼び出します。 アロケーターは、空きリストからサンプルを取得し、サンプルの参照カウントをインクリメントして、サンプルへのポインターを返します。
  • サンプルでフィルターが完了すると、サンプルの IUnknown::Release メソッドが呼び出されます。 ほとんどのオブジェクトとは異なり、参照カウントが 0 に達しても、サンプル自体は削除されません。 代わりに、アロケーターで IMemAllocator::ReleaseBuffer メソッドを呼び出し、アロケーターはサンプルを空きリストに返します。
  • アロケーターは、 IMemAllocator::D ecommit メソッドが呼び出されるまでサンプルを破棄しません。
保護されたメンバー変数 説明
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 サンプルのプロパティを設定します。

要件

要件
ヘッダー
Amfilter.h (Stream.h を含む)
ライブラリ
Strmbase.lib (小売ビルド);
Strmbasd.lib (デバッグ ビルド)