This interface allocates IMediaSample blocks to be used for data transfer between pins. The blocks can be provided by the input pin, output pin, or a third party. Release the IMediaSample object by calling the IUnknown::Release method.
When to Implement
Implement this interface if you are providing a buffer for media samples. This is typically done by filters that originate, copy, or provide a destination for the media stream. For example, a source filter provides an allocator corresponding to the incoming media, and a renderer filter provides an allocator corresponding to the hardware memory (DirectX®, for example). Intermediate transform filters can create their own allocator if copying samples and not writing directly to the renderer's allocator. Use the CBaseAllocator class to implement the IMemAllocator interface.
When to Use
Filters use this interface when retrieving or sending media samples. The allocator used might actually belong to a filter further upstream or downstream than the next filter, because many filters choose to pass the allocators through and simply modify the data in place.
Methods in Vtable Order
The following table shows the methods that appear in the Vtable beneath the standard COM methods inherited from IUnknown.
|SetProperties||Specifies a desired number of blocks, size of the blocks, and block alignment figure. This method returns the actual values for the same.|
|GetProperties||Determines the size, number, and alignment of blocks.|
|Commit||Commits the memory for the specified buffers.|
|Decommit||Releases the memory for the specified buffers.|
|GetBuffer||Retrieves a container for a sample.|
|ReleaseBuffer||Releases a container for a sample.|
DirectShow applications and DirectShow filters have different include file and link library requirements. See Setting Up the Build Environment for more information.
OS Versions: Windows CE 2.12 and later. Version 2.12 requires DXPAK 1.0 or later.
Last updated on Wednesday, April 13, 2005
© 2005 Microsoft Corporation. All rights reserved.