[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
クラスは CMediaSample 、 IMediaSample2 インターフェイスをサポートするメディア サンプルを定義します。 メディア サンプルには、メモリ バッファーへのポインターと、保護されたメンバー変数として格納されているさまざまなプロパティが含まれています。
メディア サンプルは、 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 | サンプルのプロパティを設定します。 |
要件
| 要件 | 値 |
|---|---|
| ヘッダー |
|
| ライブラリ |
|