IltmmMultiStreamSource Interface

The ltmmMultiStreamSource Object is accessed through the IltmmMultiStreamSource Interface and the IltmmObjectWrapper Interface. For more information about the IltmmObjectWrapper Interface, refer to IltmmObjectWrapper. The IltmmMultiStreamSource Interface lets the user set and get information about an ltmmMultiStreamSource object.

In addition to the methods inherited from IDispatch, the IltmmMultiStreamSource interface exposes the following functions:

Functions

IltmmMultiStreamSource::get_StreamCount

IltmmMultiStreamSource::put_StreamCount

IltmmMultiStreamSource::SetMediaType

IltmmMultiStreamSource::GetMediaType

IltmmMultiStreamSource::GetSampleBuffer

IltmmMultiStreamSource::DeliverSample

IltmmMultiStreamSource::DeliverEndOfStream

A multi stream source will provide samples having different media types (each stream will have its own media type). Each media type is set in the ltmmMediaType object, accessed through the IltmmMediaTypeDisp Interface. Once the media type is set using the IltmmMediaTypeDisp Interface, the media type for each source stream is set by calling IltmmMultiStreamSource::SetMediaType and retrieved using IltmmMultiStreamSource::GetMediaType.

The Multi Stream Source object is intended for use with either a Convert Object or a Play Object. Once the source for the Convert or Play object is set, the play or the conversion process can be started, after which the multiple stream source can begin sending samples downstream. For each stream, you would do the following:

A.

Obtain a free sample buffer using GetSampleBuffer.

B.

Set the sample information using the IltmmMediaSampleDisp Interface, and fill the sample data.

C.

Deliver the sample by calling the DeliverSample.

D.

Release the buffer.

E.

Continue sending samples until the end of the stream is reached.

F.

Call DeliverEndOfStream for each stream.

 

Then stop the play or conversion process.

An overview of the whole process would look like this:

1.

Set the number of streams with IltmmMultiStreamSource::put_StreamCount.

2.

each stream ‘n’ (n from 0 to StreamCount – 1), do the following:

 

a.

Set the stream media type IltmmMultiStreamSource::SetMediaType(n, …)

 

b.

Feed the samples in a loop:

 

 

i.

Obtain a free sample buffer: IltmmMultiStreamSource::GetSampleBuffer(n)

 

 

ii.

Fill the sample data

 

 

iii.

Deliver the sample: IltmmMultiStreamSource::DeliverSample(n, …)

 

c.

After all the samples for a stream have been delivered, indicate that the end of stream has been reached: IltmmMultiStreamSource::DeliverEndOfStream(n, …)

For one stream only, use IltmmSampleSource instead of IltmmMultiStreamSource.