Media Buffer (IMFMediaBuffer)

Media Dataを有するメモリーブロックを管理するオブジェクトです。

Media Bufferインスタンスの取得

Media Sampleから

Media SampleからMedia Bufferを得るには、次のIMFSampleのメソッドを呼びます。

新規に作成

新しいIMFMediaBufferは、下表の関数で作成できます。

関数 機能
MFCreateMemoryBuffer() Creates a buffer and allocates system memory.
MFCreateMediaBufferWrapper() Creates a media buffer that wraps an existing media buffer.
MFCreateDXSurfaceBuffer() Creates a buffer that manages a DirectX surface.
MFCreateAlignedMemoryBuffer() Creates a buffer and allocates system memory with a specified alignment.

MFCreateMemoryBuffer()

HRESULT MFCreateMemoryBuffer(
  DWORD          cbMaxLength, // バッファのサイズ
  IMFMediaBuffer **ppBuffer
);
MFCreateMemoryBuffer function (mfapi.h) | Microsoft Learn

Lock()

バッファ内のメモリへのアクセスを得られます。

HRESULT Lock(
  BYTE  **ppbBuffer,      // バッファの開始位置を受け取るためのポインタ
  DWORD *pcbMaxLength,    // バッファに割り当てられているバイト数を受け取る。これはIMFMediaBuffer::GetMaxLength()と同じ値
  DWORD *pcbCurrentLength // 有効なデータのバイト数を受け取る。これはIMFMediaBuffer::GetCurrentLength()と同じ値
);
IMFMediaBuffer::Lock (mfobjects.h) | Microsoft Learn

Lock()の呼び出しごとにUnlock()を呼び出し、バッファをアンロックするようにします。このメソッドはメモリを割り当てますが、バッファを解放してはなりません。それはMedia Bufferが破棄されるときに、解放されます。

Microsoft Learnから検索