IWMReaderAllocatorEx::AllocateForOutputEx method (wmsdkidl.h)
[The feature associated with this page, Windows Media Format 11 SDK, is a legacy feature. It has been superseded by Source Reader and Sink Writer. Source Reader and Sink Writer have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use Source Reader and Sink Writer instead of Windows Media Format 11 SDK, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]
The AllocateForOutputEx method allocates a user-created buffer for samples delivered to the IWMReaderCallback::OnSample method.
Syntax
HRESULT AllocateForOutputEx(
[in] DWORD dwOutputNum,
[in] DWORD cbBuffer,
[out] INSSBuffer **ppBuffer,
[in] DWORD dwFlags,
[in] QWORD cnsSampleTime,
[in] QWORD cnsSampleDuration,
[in] void *pvContext
);
Parameters
[in] dwOutputNum
DWORD containing the output number.
[in] cbBuffer
Size of ppBuffer, in bytes.
[out] ppBuffer
Pointer to a pointer to an INSSBuffer object.
[in] dwFlags
DWORD containing the relevant flags.
Flag | Description |
---|---|
WM_SFEX_NOTASYNCPOINT | This flag is the opposite of the WM_SF_CLEANPOINT flag used in other methods of this SDK. It indicates that the point is not a key frame, or is not a good point to go to during a seek. This inverse definition is used for compatibility with DirectShow. |
WM_SFEX_DATALOSS | Some data has been lost between the previous sample and the sample with the flag set. |
[in] cnsSampleTime
Specifies the sample time, in 100-nanosecond units.
[in] cnsSampleDuration
Specifies the sample duration, in 100-nanosecond units.
[in] pvContext
Generic pointer, for use by the application. This pointer is the context pointer given to the IWMReader::Start method.
Return value
If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.
Remarks
This method differs from IWMReaderCallbackAdvanced::AllocateForOutput in that sample time and duration values can be passed.
When you allocate a sample in your implementation of this method, you should call INSSBuffer::SetLength to set the length of the buffer to the length passed by the reader in the cbBuffer parameter. If you do not set the current length on the buffer, the reader may encounter an error.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 2000 Professional [desktop apps only],Windows Media Format 7 SDK, or later versions of the SDK |
Minimum supported server | Windows 2000 Server [desktop apps only] |
Target Platform | Windows |
Header | wmsdkidl.h (include Wmsdk.h) |