# rtppassthroughpay

This elements pass RTP packets along unchanged and appear as a RTP payloader element to the outside world.

This is useful, for example, in the case where you are receiving RTP packets from a different source and want to serve them over RTSP. Since the gst-rtsp-server library expect the element marked as `payX` to be a RTP payloader element and assumes certain properties are available.

## Example pipelines

     gst-launch-1.0 rtpbin name=rtpbin \
         videotestsrc ! videoconvert ! x264enc ! rtph264pay ! rtpbin.send_rtp_sink_0 \
         rtpbin.send_rtp_src_0 ! udpsink port=5000

Encode and payload H264 video from videotestsrc. The H264 RTP packets are sent on UDP port 5000.

     test-launch "( udpsrc port=5000 caps=application/x-rtp, ..." ! .recv_rtp_sink_0 \
          rtpbin ! rtppassthroughpay name=pay0 )"

Setup a gstreamer-rtsp-server using the example tool, it will listen for H264 RTP packets on port 5000 and present them using the rtppassthroughpay element as the well-known payloader pay0.

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──rtppassthroughpay

## Factory details

Authors: – Sebastian Dröge <sebastian@centricular.com>, Jonas Danielsson <jonas.danielsson@spiideo.com></jonas.danielsson@spiideo.com></sebastian@centricular.com>

Classification: – `Codec/Payloader/Network/RTP`

Rank – none

Plugin – rtp

Package – GStreamer Good Plug-ins

## Pad Templates

### `sink`

    application/x-rtp:
            payload: [ 0, 127 ]
         clock-rate: [ 1, 2147483647 ]

Presence – always

Direction – sink

Object type – GstPad

### `src`

    application/x-rtp:
            payload: [ 0, 127 ]
         clock-rate: [ 1, 2147483647 ]

Presence – always

Direction – src

Object type – GstPad

## Properties

### mtu

    “mtu” guint

Setting this property has no effect on this element, it is here and it is writable only to emulate a proper RTP payloader.

Flags : Read / Write

Default value : 0

Since : 1.24

### pt

    “pt” guint

If set this will override the payload of the incoming RTP packets. If not set the payload type will be same as incoming RTP packets.

Flags : Read / Write

Default value : 128

Since : 1.24

### retimestamp-mode

    “retimestamp-mode” Rtp-passthrough-pay-retimestamp-mode *

If enabled, this mode will cause RTP timestamps to be re-generated based on the PTS of each processed buffer.

Flags : Read / Write

Default value : disabled (0)

Since : 1.26

### seqnum

    “seqnum” guint

Flags : Read

Default value : 0

Since : 1.24

### seqnum-offset

    “seqnum-offset” gint

Flags : Read / Write

Default value : 0

Since : 1.24

### stats

    “stats” GstStructure *

Flags : Read

Default value :

    application/x-rtp-payload-stats, clock-rate=(uint)0, running-time=(guint64)0, seqnum=(uint)0, timestamp=(uint)0, ssrc=(uint)0, pt=(uint)128, seqnum-offset=(uint)0, timestamp-offset=(uint)0;

Since : 1.24

### timestamp

    “timestamp” guint

Flags : Read

Default value : 0

Since : 1.24

### timestamp-offset

    “timestamp-offset” guint

Flags : Read / Write

Default value : 0

Since : 1.24

## Named constants

### Rtp-passthrough-pay-retimestamp-mode

#### Members

`disabled` (0) – No retimestamping
`enabled` (1) – Retimestamp based on PTS of each buffer

Since : 1.26

The results of the search are