RTP Demux Filter

[This is preliminary documentation and subject to change.]

This filter is used to demultiplex RTP packets received from a multicast conference into separate streams. It also serves as a point through which the application may control which streams are important (and thus are rendered) and which are not. This filter exposes a single input pin, which is of type MEDIATYPE_RTP_Multiple_Stream/MEDIASUBTYPE_RTP_Payload_Mixed. It can expose an application-configured number of output pins, each of which is of payload type MEDIATYPE_RTP_Single_Stream/MEDIASUBTYPE_RTP_Payload_XXXX.

Each output pin corresponds to a single sender in an RTP session, which must be transmitting RTP packets whose PT value matches the assigned media subtype of the pin. The quantity of pins and the assignment of each pin to a particular sender are determined by the application.

The number of pins and their media types may only be set when the filter is in a stopped state. However, the assignment of each stream to a particular pin may be changed dynamically. This solves the problem of changing media types within a particular stream, in that a particular Demux filter could have two MEDIASUBTYPE_RTP_Payload_XXXX type output pins -- one configured for MEDIASUBTYPE_RTP_Payload_G711 and one for MEDIASUBTYPE_RTP_Payload_G723. Each would be connected to the appropriate RTP RPH filter followed by a decoder and other necessary filters. If a sender transmitting a stream of type G.711 changed PT to G.723, it would be possible to change the pin. The RTP packets are delivered to ensure that the packets are given to the correct payload handler. As no reconnection of filters would be necessary, this could be done without stopping the filter graph.

It is possible for an application to leave some pins unassigned to any particular stream. These pins may then be used by the application as a pool to dynamically assign streams to pins. This allows sporadic speakers in a large conference to be rendered without forcing allocation of separate codecs and renderers for each speaker. To further support this feature, the RTP Demux filter can be configured to automatically map new streams to available pins with the appropriate media type.

This filter uses DirectShow™ notifications to indicate to the application when new SSRCs have been arrived. This filter also indicates automatic mapping of new streams to pins and later indicates unmapping (due to timeouts) of streams via the same methods.

Structures

RTP Demux Constants

Interfaces

IEnumSSRCs Queries the SSRCs currently being tracked by the RTP Demux filter.
IRTPDemuxFilter Initializes and controls the Intel RTP Demux filter.