CMemAllocator.SetProperties method

[The feature associated with this page, DirectShow, is a legacy feature. It has been superseded by MediaPlayer, IMFMediaEngine, and Audio/Video Capture in Media Foundation. Those features have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use MediaPlayer, IMFMediaEngine and Audio/Video Capture in Media Foundation instead of DirectShow, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]

The SetProperties method specifies the number of buffers to allocate and the size of each buffer.

Syntax

HRESULT SetProperties(
   ALLOCATOR_PROPERTIES *pRequest,
   ALLOCATOR_PROPERTIES *pActual
);

Parameters

pRequest

Pointer to an ALLOCATOR_PROPERTIES structure that contains the buffer requirements.

pActual

Pointer to an ALLOCATOR_PROPERTIES structure that receives the actual buffer properties.

Return value

Returns one of the HRESULT values shown in the following table.

Return code Description
S_OK
Success.
E_POINTER
NULL pointer argument.
VFW_E_ALREADY_COMMITTED
Cannot change allocated memory while the filter is active.
VFW_E_BADALIGN
An invalid alignment was specified.
VFW_E_BUFFERS_OUTSTANDING
One or more buffers are still active.

Remarks

This method overrides the CBaseAllocator::SetProperties method.

The buffer alignment, specified by the cbAlign member of the ALLOCATOR_PROPERTIES structure, must be an even power of two.

Requirements

Requirement Value
Header
Amfilter.h (include Streams.h)
Library
Strmbase.lib (retail builds);
Strmbasd.lib (debug builds)

See also

CMemAllocator Class