Media Dataを有するメモリーブロックを管理するオブジェクトです。
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. |
HRESULT MFCreateMemoryBuffer(
DWORD cbMaxLength, // バッファのサイズ
IMFMediaBuffer **ppBuffer
);
MFCreateMemoryBuffer function (mfapi.h) | Microsoft Learn
バッファ内のメモリへのアクセスを得られます。
HRESULT Lock( BYTE **ppbBuffer, // バッファの開始位置を受け取るためのポインタ DWORD *pcbMaxLength, // バッファに割り当てられているバイト数を受け取る。これはIMFMediaBuffer::GetMaxLength()と同じ値 DWORD *pcbCurrentLength // 有効なデータのバイト数を受け取る。これはIMFMediaBuffer::GetCurrentLength()と同じ値 );IMFMediaBuffer::Lock (mfobjects.h) | Microsoft Learn
Lock()の呼び出しごとにUnlock()を呼び出し、バッファをアンロックするようにします。このメソッドはメモリを割り当てますが、バッファを解放してはなりません。それはMedia Bufferが破棄されるときに、解放されます。