rtph261pay

Payload encoded H.261 video frames into RTP packets according to RFC 4587. For detailed information see: https://www.rfc-editor.org/rfc/rfc4587.txt

The payloader takes a H.261 frame, parses it and splits it into fragments on MB boundaries in order to match configured MTU size. For each fragment an RTP packet is constructed with an RTP packet header followed by the fragment. In addition the payloader will make sure the packetized H.261 stream appears as a continuous bit-stream after depacketization by shifting the encoded bit-stream of a frame to align with the last significant bit of the previous frame. This helps interoperability in the case where the encoder does not produce a continuous bit-stream but the decoder requires it.

Example launch line

 gst-launch-1.0 videotestsrc ! avenc_h261 ! rtph261pay ! udpsink

This will encode a test video and payload it. Refer to the rtph261depay example to depayload and play the RTP stream.

Hierarchy

GObject
    ╰──GInitiallyUnowned
        ╰──GstObject
            ╰──GstElement
                ╰──GstRTPBasePayload
                    ╰──rtph261pay

Factory details

Authors: – Stian Selnes

Classification:Codec/Payloader/Network/RTP

Rank – secondary

Plugin – gstrtp

Package – GStreamer Good Plug-ins

Pad Templates

sink

video/x-h261:

Presencealways

Directionsink

Object typeGstPad


src

application/x-rtp:
          media: video
        payload: 31
     clock-rate: 90000
  encoding-name: H261
application/x-rtp:
          media: video
        payload: [ 96, 127 ]
     clock-rate: 90000
  encoding-name: H261

Presencealways

Directionsrc

Object typeGstPad


Properties

max-ptime

“max-ptime” gint64

Maximum duration of the packet data in ns (-1 = unlimited up to MTU)

Flags : Read / Write

Default value : 18446744073709551615


min-ptime

“min-ptime” gint64

Minimum duration of the packet data in ns (can't go above MTU)

Flags : Read / Write

Default value : 0


mtu

“mtu” guint

Maximum size of one packet

Flags : Read / Write

Default value : 1400


onvif-no-rate-control

“onvif-no-rate-control” gboolean

Enable ONVIF Rate-Control=no timestamping mode

Flags : Read / Write

Default value : false


perfect-rtptime

“perfect-rtptime” gboolean

Generate perfect RTP timestamps when possible

Flags : Read / Write

Default value : true


pt

“pt” guint

The payload type of the packets

Flags : Read / Write

Default value : 31


ptime-multiple

“ptime-multiple” gint64

Force buffers to be multiples of this duration in ns (0 disables)

Flags : Read / Write

Default value : 0


scale-rtptime

“scale-rtptime” gboolean

Whether the RTP timestamp should be scaled with the rate (speed)

Flags : Read / Write

Default value : true


seqnum

“seqnum” guint

The RTP sequence number of the last processed packet

Flags : Read

Default value : 0


seqnum-offset

“seqnum-offset” gint

Offset to add to all outgoing seqnum (-1 = random)

Flags : Read / Write

Default value : -1


source-info

“source-info” gboolean

Write CSRC based on buffer meta RTP source information

Flags : Read / Write

Default value : false


ssrc

“ssrc” guint

The SSRC of the packets (default == random)

Flags : Read / Write

Default value : -1


stats

“stats” GstStructure *

Various statistics

Flags : Read

Default value :

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

timestamp

“timestamp” guint

The RTP timestamp of the last processed packet

Flags : Read

Default value : 0


timestamp-offset

“timestamp-offset” guint

Offset to add to all outgoing timestamps (default = random)

Flags : Read / Write

Default value : -1


twcc-ext-id

“twcc-ext-id” guint

The RTP header-extension ID to use for tagging buffers with Transport-wide Congestion Control sequencenumbers (0 = disable)

Flags : Read / Write

Default value : 0


The results of the search are