# rtpptdemux

rtpptdemux acts as a demuxer for RTP packets based on the payload type of the packets. Its main purpose is to allow an application to easily receive and decode an RTP stream with multiple payload types.

For each payload type that is detected, a new pad will be created and the new-payload-type signal will be emitted. When the payload for the RTP stream changes, the payload-type-change signal will be emitted.

The element will try to set complete and unique application/x-rtp caps on the output pads based on the result of the request-pt-map signal.

## Example pipelines

     gst-launch-1.0 udpsrc caps="application/x-rtp" ! rtpptdemux ! fakesink

Takes an RTP stream and send the RTP packets with the first detected payload type to fakesink, discarding the other payload types.

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──rtpptdemux

## Factory details

Authors: – Kai Vehmanen <kai.vehmanen></kai.vehmanen>

Classification: – `Demux/Network/RTP`

Rank – none

Plugin – rtpmanager

Package – GStreamer Good Plug-ins

## Pad Templates

### `sink`

    application/x-rtp:

Presence – always

Direction – sink

Object type – GstPad

### `src_%u`

    application/x-rtp:
            payload: [ 0, 255 ]

Presence – sometimes

Direction – src

Object type – GstPad

## Signals

### new-payload-type

    new_payload_type_callback (GstElement * demux,
                               guint pt,
                               GstPad * pad,
                               gpointer udata)

    def new_payload_type_callback (demux, pt, pad, udata):
        #python callback for the 'new-payload-type' signal

    function new_payload_type_callback(demux: GstElement * demux, pt: guint pt, pad: GstPad * pad, udata: gpointer udata): {
        // javascript callback for the 'new-payload-type' signal
    }

Emitted when a new payload type pad has been created in demux.

Parameters:

`demux` –

the object which received the signal

`pt` –

the payload type

`pad` –

the pad with the new payload

`udata` –
No description available

Flags: Run Last

### payload-type-change

    payload_type_change_callback (GstElement * demux,
                                  guint pt,
                                  gpointer udata)

    def payload_type_change_callback (demux, pt, udata):
        #python callback for the 'payload-type-change' signal

    function payload_type_change_callback(demux: GstElement * demux, pt: guint pt, udata: gpointer udata): {
        // javascript callback for the 'payload-type-change' signal
    }

Emitted when the payload type changed.

Parameters:

`demux` –

the object which received the signal

`pt` –

the new payload type

`udata` –
No description available

Flags: Run Last

### request-pt-map

    GstCaps *
    request_pt_map_callback (GstElement * demux,
                             guint pt,
                             gpointer udata)

    def request_pt_map_callback (demux, pt, udata):
        #python callback for the 'request-pt-map' signal

    function request_pt_map_callback(demux: GstElement * demux, pt: guint pt, udata: gpointer udata): {
        // javascript callback for the 'request-pt-map' signal
    }

Request the payload type as GstCaps for pt.

Parameters:

`demux` –

the object which received the signal

`pt` –

the payload type

`udata` –
No description available
Returns (GstCaps *) –
No description available

Flags: Run Last

## Action Signals

### clear-pt-map

    g_signal_emit_by_name (demux, "clear-pt-map");

    ret = demux.emit ("clear-pt-map")

    let ret = demux.emit ("clear-pt-map");

The application can call this signal to instruct the element to discard the currently cached payload type map.

Parameters:

`demux` (GstElement *) –

the object which received the signal

Flags: Run Last / Action

## Properties

### ignored-payload-types

    “ignored-payload-types” GstValueArray *

If specified, packets with an ignored payload type will be dropped, instead of causing a new pad to be exposed for these to be pushed on.

This is for example useful to drop FEC protection packets, as they need to go through the rtpjitterbuffer, but cease to be useful past that point, rtpbin will make use of this property for that purpose.

Flags : Read / Write

Since : 1.14

The results of the search are