gstrtpbasepayload

gstrtpbasepayload — Base class for RTP payloader

Synopsis

#include <gst/rtp/gstrtpbasepayload.h>

struct              GstRTPBasePayload;
struct              GstRTPBasePayloadClass;
#define             GST_RTP_BASE_PAYLOAD_MTU            (payload)
#define             GST_RTP_BASE_PAYLOAD_PT             (payload)
#define             GST_RTP_BASE_PAYLOAD_SINKPAD        (payload)
#define             GST_RTP_BASE_PAYLOAD_SRCPAD         (payload)
gboolean            gst_rtp_base_payload_is_filled      (GstRTPBasePayload *payload,
                                                         guint size,
                                                         GstClockTime duration);
GstFlowReturn       gst_rtp_base_payload_push           (GstRTPBasePayload *payload,
                                                         GstBuffer *buffer);
GstFlowReturn       gst_rtp_base_payload_push_list      (GstRTPBasePayload *payload,
                                                         GstBufferList *list);
void                gst_rtp_base_payload_set_options    (GstRTPBasePayload *payload,
                                                         const gchar *media,
                                                         gboolean dynamic,
                                                         const gchar *encoding_name,
                                                         guint32 clock_rate);
gboolean            gst_rtp_base_payload_set_outcaps    (GstRTPBasePayload *payload,
                                                         const gchar *fieldname,
                                                         ...);

Object Hierarchy

  GObject
   +----GInitiallyUnowned
         +----GstObject
               +----GstElement
                     +----GstRTPBasePayload
                           +----GstRTPBaseAudioPayload

Properties

  "max-ptime"                gint64                : Read / Write
  "min-ptime"                gint64                : Read / Write
  "mtu"                      guint                 : Read / Write
  "perfect-rtptime"          gboolean              : Read / Write
  "pt"                       guint                 : Read / Write
  "ptime-multiple"           gint64                : Read / Write
  "seqnum"                   guint                 : Read
  "seqnum-offset"            gint                  : Read / Write
  "ssrc"                     guint                 : Read / Write
  "stats"                    GstStructure*         : Read
  "timestamp"                guint                 : Read
  "timestamp-offset"         guint                 : Read / Write

Description

Provides a base class for RTP payloaders

Details

struct GstRTPBasePayload

struct GstRTPBasePayload;

struct GstRTPBasePayloadClass

struct GstRTPBasePayloadClass {
  GstElementClass parent_class;

  /* query accepted caps */
  GstCaps *     (*get_caps)             (GstRTPBasePayload *payload, GstPad * pad, GstCaps * filter);
  /* receive caps on the sink pad, configure the payloader. */
  gboolean      (*set_caps)             (GstRTPBasePayload *payload, GstCaps *caps);

  /* handle a buffer, perform 0 or more gst_rtp_base_payload_push() on
   * the RTP buffers. This function takes ownership of the buffer. */
  GstFlowReturn (*handle_buffer)        (GstRTPBasePayload *payload,
                                         GstBuffer *buffer);
  /* handle events and queries */
  gboolean      (*sink_event)           (GstRTPBasePayload *payload, GstEvent * event);
  gboolean      (*src_event)            (GstRTPBasePayload *payload, GstEvent * event);
  gboolean      (*query)                (GstRTPBasePayload *payload, GstPad *pad, GstQuery * query);
};

Base class for audio RTP payloader.

GstElementClass parent_class;

the parent class

get_caps ()

get desired caps

set_caps ()

configure the payloader

handle_buffer ()

process data

sink_event ()

custom event handling on the sinkpad

src_event ()

custom event handling on the srcpad

query ()

custom query handling

GST_RTP_BASE_PAYLOAD_MTU()

#define GST_RTP_BASE_PAYLOAD_MTU(payload) (GST_RTP_BASE_PAYLOAD (payload)->mtu)

Get access to the configured MTU of payload.

payload :

a GstRTPBasePayload

GST_RTP_BASE_PAYLOAD_PT()

#define GST_RTP_BASE_PAYLOAD_PT(payload)  (GST_RTP_BASE_PAYLOAD (payload)->pt)

Get access to the configured payload type of payload.

payload :

a GstRTPBasePayload

GST_RTP_BASE_PAYLOAD_SINKPAD()

#define GST_RTP_BASE_PAYLOAD_SINKPAD(payload) (GST_RTP_BASE_PAYLOAD (payload)->sinkpad)

Get access to the sinkpad of payload.

payload :

a GstRTPBasePayload

GST_RTP_BASE_PAYLOAD_SRCPAD()

#define GST_RTP_BASE_PAYLOAD_SRCPAD(payload)  (GST_RTP_BASE_PAYLOAD (payload)->srcpad)

Get access to the srcpad of payload.

payload :

a GstRTPBasePayload

gst_rtp_base_payload_is_filled ()

gboolean            gst_rtp_base_payload_is_filled      (GstRTPBasePayload *payload,
                                                         guint size,
                                                         GstClockTime duration);

Check if the packet with size and duration would exceed the configured maximum size.

payload :

a GstRTPBasePayload

size :

the size of the packet

duration :

the duration of the packet

Returns :

TRUE if the packet of size and duration would exceed the configured MTU or max_ptime.

gst_rtp_base_payload_push ()

GstFlowReturn       gst_rtp_base_payload_push           (GstRTPBasePayload *payload,
                                                         GstBuffer *buffer);

Push buffer to the peer element of the payloader. The SSRC, payload type, seqnum and timestamp of the RTP buffer will be updated first.

This function takes ownership of buffer.

payload :

a GstRTPBasePayload

buffer :

a GstBuffer

Returns :

a GstFlowReturn.

gst_rtp_base_payload_push_list ()

GstFlowReturn       gst_rtp_base_payload_push_list      (GstRTPBasePayload *payload,
                                                         GstBufferList *list);

Push list to the peer element of the payloader. The SSRC, payload type, seqnum and timestamp of the RTP buffer will be updated first.

This function takes ownership of list.

payload :

a GstRTPBasePayload

list :

a GstBufferList

Returns :

a GstFlowReturn.

gst_rtp_base_payload_set_options ()

void                gst_rtp_base_payload_set_options    (GstRTPBasePayload *payload,
                                                         const gchar *media,
                                                         gboolean dynamic,
                                                         const gchar *encoding_name,
                                                         guint32 clock_rate);

Set the rtp options of the payloader. These options will be set in the caps of the payloader. Subclasses must call this method before calling gst_rtp_base_payload_push() or gst_rtp_base_payload_set_outcaps().

payload :

a GstRTPBasePayload

media :

the media type (typically "audio" or "video")

dynamic :

if the payload type is dynamic

encoding_name :

the encoding name

clock_rate :

the clock rate of the media

gst_rtp_base_payload_set_outcaps ()

gboolean            gst_rtp_base_payload_set_outcaps    (GstRTPBasePayload *payload,
                                                         const gchar *fieldname,
                                                         ...);

Configure the output caps with the optional parameters.

Variable arguments should be in the form field name, field type (as a GType), value(s). The last variable argument should be NULL.

payload :

a GstRTPBasePayload

fieldname :

the first field name or NULL

... :

field values

Returns :

TRUE if the caps could be set.

Property Details

The "max-ptime" property

  "max-ptime"                gint64                : Read / Write

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

Allowed values: >= -1

Default value: -1


The "min-ptime" property

  "min-ptime"                gint64                : Read / Write

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

Allowed values: >= 0

Default value: 0


The "mtu" property

  "mtu"                      guint                 : Read / Write

Maximum size of one packet.

Allowed values: >= 28

Default value: 1400


The "perfect-rtptime" property

  "perfect-rtptime"          gboolean              : Read / Write

Try to use the offset fields to generate perfect RTP timestamps. When this option is disabled, RTP timestamps are generated from GST_BUFFER_PTS of each payloaded buffer. The PTSes of buffers may not necessarily increment with the amount of data in each input buffer, consider e.g. the case where the buffer arrives from a network which means that the PTS is unrelated to the amount of data. Because the RTP timestamps are generated from GST_BUFFER_PTS this can result in RTP timestamps that also don't increment with the amount of data in the payloaded packet. To circumvent this it is possible to set the perfect rtptime option enabled. When this option is enabled the payloader will increment the RTP timestamps based on GST_BUFFER_OFFSET which relates to the amount of data in each packet rather than the GST_BUFFER_PTS of each buffer and therefore the RTP timestamps will more closely correlate with the amount of data in each buffer. Currently GstRTPBasePayload is limited to handling perfect RTP timestamps for audio streams.

Default value: TRUE


The "pt" property

  "pt"                       guint                 : Read / Write

The payload type of the packets.

Allowed values: <= 127

Default value: 96


The "ptime-multiple" property

  "ptime-multiple"           gint64                : Read / Write

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

Allowed values: >= 0

Default value: 0


The "seqnum" property

  "seqnum"                   guint                 : Read

The RTP sequence number of the last processed packet.

Allowed values: <= 65535

Default value: 0


The "seqnum-offset" property

  "seqnum-offset"            gint                  : Read / Write

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

Allowed values: [-1,65535]

Default value: -1


The "ssrc" property

  "ssrc"                     guint                 : Read / Write

The SSRC of the packets (default == random).

Default value: 4294967295


The "stats" property

  "stats"                    GstStructure*         : Read

Various payloader statistics retrieved atomically (and are therefore synchroized with each other), these can be used e.g. to generate an RTP-Info header. This property return a GstStructure named application/x-rtp-payload-stats containing the following fields relating to the last processed buffer and current state of the stream being payloaded:

clock-rate

G_TYPE_UINT, clock-rate of the stream

running-time

G_TYPE_UINT64, running time

seqnum

G_TYPE_UINT, sequence number, same as "seqnum"

timestamp

G_TYPE_UINT, RTP timestamp, same as "timestamp"

ssrc

G_TYPE_UINT, The SSRC in use

pt

G_TYPE_UINT, The Payload type in use, same as "pt"

seqnum-offset

G_TYPE_UINT, The current offset added to the seqnum

timestamp-offset

G_TYPE_UINT, The current offset added to the timestamp


The "timestamp" property

  "timestamp"                guint                 : Read

The RTP timestamp of the last processed packet.

Default value: 0


The "timestamp-offset" property

  "timestamp-offset"         guint                 : Read / Write

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

Default value: 4294967295