IltmmMultiStreamSource::GetSampleBuffer

#include "ltmm.h"

C Syntax

HRESULT IltmmMultiStreamSource_getSampleBuffer( pMultiStreamSource, Stream, TimeOut, MediaSample)

C++ Syntax

HRESULT GetSampleBuffer(Stream, TimeOut, MediaSample);

 

IltmmMultiStreamSource *pMultiStreamSource;

/* pointer to an interface */

long Stream;

/* The stream index (0-based) */

long TimeOut;

/* Time allowed for sample delivery */

IltmmMediaSampleDisp **MediaSample;

/* pointer to a pointer */

Retrieves a sample buffer from a stream.

Parameter

Description

pMultiStreamSource

Pointer to an IltmmMultiStreamSource interface that references the sample source object that is getting the sample buffer.

Stream

The stream index (0-based) that indicates the stream for which we get the sample buffer.

TimeOut

Maximum time to wait for a free sample buffer, in milliseconds. If TimeOut is -1, the function's time-out interval never elapses.

MediaSample

Pointer to a variable to be updated with a pointer to an IltmmMediaSampleDisp interface. This interface references the new media sample buffer.

Returns

S_OK

The function was successful.

<> S_OK

An error occurred. Refer to the Error Codes or the HRESULT error codes in the DirectShow documentation.

Comments

The buffer retrieved by this function comes from a pool of buffers. There should be no assumptions made on the number of available buffers. If you get a buffer, fill it with data, deliver it downstream with IltmmMultiStreamSource::DeliverSample, and release the buffer before getting another. This is because there may be only one buffer available at a time.

If the Function succeeds, the caller must free the interface referenced by the MediaSample parameter by calling the interface's Release Function. Failure to release the buffer could cause further calls to IltmmMultiStreamSource::GetSampleBuffer to fail.

If the function does not retrieve a buffer within the allotted time it will return E_FAIL. If this happens, you may have specified a small timeout and all the available buffers are currently being sent downstream.

Required DLLs and Libraries

LTMM

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application.

Platforms

Win32, x64

See Also

Elements:

IltmmMultiStreamSource::get_StreamCount, IltmmMultiStreamSource::DeliverSample, IltmmMultiStreamSource::SetMediaType, IltmmMultiStreamSource::put_StreamCount, IltmmMultiStreamSource::GetMediaType, IltmmMultiStreamSource::DeliverEndOfStream

Topics:

Multimedia Function Group

Example

For a C example, refer to Concatenate two AVI files using IltmmMultiStreamSource and IltmmMultiStreamTarget Example for C.

For a C example, refer to Replace Audio using IltmmMultiStreamSource and IltmmMultiStreamTarget Example for C.

For a C++ example, refer to Concatenate two AVI files using IltmmMultiStreamSource and IltmmMultiStreamTarget Example for C++.

For a C++ example, refer to Replace Audio using IltmmMultiStreamSource and IltmmMultiStreamTarget Example for C++.