From 24347217a510ac2a277b03315416b6c1fd369f2a Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 10 Nov 2011 17:18:00 +0100 Subject: [PATCH] rtp: fix de/payloaders gst_basertppayload -> gst_base_rtp_payload Add pts/dts support in the depayloader Remove old timestamp code Add a default getcaps function so subclasses can chain up to it instead of relying on the return value of the getcaps function. --- docs/libs/gst-plugins-base-libs.types | 2 +- gst-libs/gst/rtp/gstbasertpaudiopayload.c | 10 +- gst-libs/gst/rtp/gstbasertpdepayload.c | 119 ++++++------------- gst-libs/gst/rtp/gstbasertpdepayload.h | 10 +- gst-libs/gst/rtp/gstbasertppayload.c | 137 +++++++++++----------- gst-libs/gst/rtp/gstbasertppayload.h | 16 +-- 6 files changed, 123 insertions(+), 171 deletions(-) diff --git a/docs/libs/gst-plugins-base-libs.types b/docs/libs/gst-plugins-base-libs.types index cce4c910f7..41e5c627dd 100644 --- a/docs/libs/gst-plugins-base-libs.types +++ b/docs/libs/gst-plugins-base-libs.types @@ -51,7 +51,7 @@ gst_video_overlay_get_type #include gst_base_rtp_depayload_get_type #include -gst_basertppayload_get_type +gst_base_rtp_payload_get_type #include gst_base_rtp_audio_payload_get_type diff --git a/gst-libs/gst/rtp/gstbasertpaudiopayload.c b/gst-libs/gst/rtp/gstbasertpaudiopayload.c index a341a92c6e..5425d2c6de 100644 --- a/gst-libs/gst/rtp/gstbasertpaudiopayload.c +++ b/gst-libs/gst/rtp/gstbasertpaudiopayload.c @@ -152,10 +152,8 @@ gst_base_rtp_audio_payload_sample_time_to_bytes (GstBaseRTPAudioPayload * static GstFlowReturn gst_base_rtp_audio_payload_handle_buffer (GstBaseRTPPayload * payload, GstBuffer * buffer); - static GstStateChangeReturn gst_base_rtp_payload_audio_change_state (GstElement * element, GstStateChange transition); - static gboolean gst_base_rtp_payload_audio_handle_event (GstBaseRTPPayload * payload, GstEvent * event); @@ -475,7 +473,7 @@ gst_base_rtp_audio_payload_push (GstBaseRTPAudioPayload * baseaudiopayload, gst_base_rtp_audio_payload_set_meta (baseaudiopayload, outbuf, payload_len, timestamp); - ret = gst_basertppayload_push (basepayload, outbuf); + ret = gst_base_rtp_payload_push (basepayload, outbuf); return ret; } @@ -526,7 +524,7 @@ gst_base_rtp_audio_payload_push_buffer (GstBaseRTPAudioPayload * } GST_DEBUG_OBJECT (baseaudiopayload, "Pushing list %p", list); - ret = gst_basertppayload_push_list (basepayload, list); + ret = gst_base_rtp_payload_push_list (basepayload, list); } else { GstRTPBuffer rtp; @@ -539,7 +537,7 @@ gst_base_rtp_audio_payload_push_buffer (GstBaseRTPAudioPayload * gst_buffer_unref (buffer); GST_DEBUG_OBJECT (baseaudiopayload, "Pushing buffer %p", outbuf); - ret = gst_basertppayload_push (basepayload, outbuf); + ret = gst_base_rtp_payload_push (basepayload, outbuf); } return ret; @@ -630,7 +628,7 @@ gst_base_rtp_audio_payload_flush (GstBaseRTPAudioPayload * baseaudiopayload, gst_base_rtp_audio_payload_set_meta (baseaudiopayload, outbuf, payload_len, timestamp); - ret = gst_basertppayload_push (basepayload, outbuf); + ret = gst_base_rtp_payload_push (basepayload, outbuf); } return ret; diff --git a/gst-libs/gst/rtp/gstbasertpdepayload.c b/gst-libs/gst/rtp/gstbasertpdepayload.c index 397e5c129f..5a6892d88d 100644 --- a/gst-libs/gst/rtp/gstbasertpdepayload.c +++ b/gst-libs/gst/rtp/gstbasertpdepayload.c @@ -41,7 +41,8 @@ struct _GstBaseRTPDepayloadPrivate gdouble play_scale; gboolean discont; - GstClockTime timestamp; + GstClockTime pts; + GstClockTime dts; GstClockTime duration; guint32 next_seqnum; @@ -76,8 +77,6 @@ static gboolean gst_base_rtp_depayload_handle_sink_event (GstPad * pad, static GstStateChangeReturn gst_base_rtp_depayload_change_state (GstElement * element, GstStateChange transition); -static void gst_base_rtp_depayload_set_gst_timestamp - (GstBaseRTPDepayload * filter, guint32 rtptime, GstBuffer * buf); static gboolean gst_base_rtp_depayload_packet_lost (GstBaseRTPDepayload * filter, GstEvent * event); static gboolean gst_base_rtp_depayload_handle_event (GstBaseRTPDepayload * @@ -132,7 +131,6 @@ gst_base_rtp_depayload_class_init (GstBaseRTPDepayloadClass * klass) gstelement_class->change_state = gst_base_rtp_depayload_change_state; - klass->set_gst_timestamp = gst_base_rtp_depayload_set_gst_timestamp; klass->packet_lost = gst_base_rtp_depayload_packet_lost; klass->handle_event = gst_base_rtp_depayload_handle_event; @@ -245,7 +243,7 @@ gst_base_rtp_depayload_chain (GstPad * pad, GstBuffer * in) GstBaseRTPDepayloadClass *bclass; GstFlowReturn ret = GST_FLOW_OK; GstBuffer *out_buf; - GstClockTime timestamp; + GstClockTime pts, dts; guint16 seqnum; guint32 rtptime; gboolean discont; @@ -267,12 +265,14 @@ gst_base_rtp_depayload_chain (GstPad * pad, GstBuffer * in) if (!priv->discont) priv->discont = GST_BUFFER_IS_DISCONT (in); - timestamp = GST_BUFFER_TIMESTAMP (in); + pts = GST_BUFFER_PTS (in); + dts = GST_BUFFER_DTS (in); /* convert to running_time and save the timestamp, this is the timestamp * we put on outgoing buffers. */ - timestamp = gst_segment_to_running_time (&filter->segment, GST_FORMAT_TIME, - timestamp); - priv->timestamp = timestamp; + pts = gst_segment_to_running_time (&filter->segment, GST_FORMAT_TIME, pts); + dts = gst_segment_to_running_time (&filter->segment, GST_FORMAT_TIME, dts); + priv->pts = pts; + priv->dts = dts; priv->duration = GST_BUFFER_DURATION (in); gst_rtp_buffer_map (in, GST_MAP_READ, &rtp); @@ -282,9 +282,9 @@ gst_base_rtp_depayload_chain (GstPad * pad, GstBuffer * in) discont = FALSE; - GST_LOG_OBJECT (filter, "discont %d, seqnum %u, rtptime %u, timestamp %" - GST_TIME_FORMAT, priv->discont, seqnum, rtptime, - GST_TIME_ARGS (timestamp)); + GST_LOG_OBJECT (filter, "discont %d, seqnum %u, rtptime %u, pts %" + GST_TIME_FORMAT ", dts %" GST_TIME_FORMAT, priv->discont, seqnum, rtptime, + GST_TIME_ARGS (pts), GST_TIME_ARGS (dts)); /* Check seqnum. This is a very simple check that makes sure that the seqnums * are striclty increasing, dropping anything that is out of the ordinary. We @@ -334,9 +334,7 @@ gst_base_rtp_depayload_chain (GstPad * pad, GstBuffer * in) /* let's send it out to processing */ out_buf = bclass->process (filter, in); if (out_buf) { - /* we pass rtptime as backward compatibility, in reality, the incomming - * buffer timestamp is always applied to the outgoing packet. */ - ret = gst_base_rtp_depayload_push_ts (filter, rtptime, out_buf); + ret = gst_base_rtp_depayload_push (filter, out_buf); } gst_buffer_unref (in); @@ -503,20 +501,29 @@ typedef struct { GstBaseRTPDepayload *depayload; GstBaseRTPDepayloadClass *bclass; - gboolean do_ts; - gboolean rtptime; } HeaderData; static gboolean set_headers (GstBuffer ** buffer, guint idx, HeaderData * data) { GstBaseRTPDepayload *depayload = data->depayload; + GstBaseRTPDepayloadPrivate *priv = depayload->priv; + GstClockTime pts, dts, duration; *buffer = gst_buffer_make_writable (*buffer); - /* set the timestamp if we must and can */ - if (data->bclass->set_gst_timestamp && data->do_ts) - data->bclass->set_gst_timestamp (depayload, data->rtptime, *buffer); + pts = GST_BUFFER_PTS (*buffer); + dts = GST_BUFFER_DTS (*buffer); + duration = GST_BUFFER_DURATION (*buffer); + + /* apply last incomming timestamp and duration to outgoing buffer if + * not otherwise set. */ + if (!GST_CLOCK_TIME_IS_VALID (pts)) + GST_BUFFER_PTS (*buffer) = priv->pts; + if (!GST_CLOCK_TIME_IS_VALID (dts)) + GST_BUFFER_DTS (*buffer) = priv->dts; + if (!GST_CLOCK_TIME_IS_VALID (duration)) + GST_BUFFER_DURATION (*buffer) = priv->duration; if (G_UNLIKELY (depayload->priv->discont)) { GST_LOG_OBJECT (depayload, "Marking DISCONT on output buffer"); @@ -524,18 +531,21 @@ set_headers (GstBuffer ** buffer, guint idx, HeaderData * data) depayload->priv->discont = FALSE; } + /* make sure we only set the timestamp on the first packet */ + priv->pts = GST_CLOCK_TIME_NONE; + priv->dts = GST_CLOCK_TIME_NONE; + priv->duration = GST_CLOCK_TIME_NONE; + return TRUE; } static GstFlowReturn gst_base_rtp_depayload_prepare_push (GstBaseRTPDepayload * filter, - gboolean do_ts, guint32 rtptime, gboolean is_list, gpointer obj) + gboolean is_list, gpointer obj) { HeaderData data; data.depayload = filter; - data.rtptime = rtptime; - data.do_ts = do_ts; data.bclass = GST_BASE_RTP_DEPAYLOAD_GET_CLASS (filter); if (is_list) { @@ -561,40 +571,6 @@ gst_base_rtp_depayload_prepare_push (GstBaseRTPDepayload * filter, return GST_FLOW_OK; } -/** - * gst_base_rtp_depayload_push_ts: - * @filter: a #GstBaseRTPDepayload - * @timestamp: an RTP timestamp to apply - * @out_buf: a #GstBuffer - * - * Push @out_buf to the peer of @filter. This function takes ownership of - * @out_buf. - * - * Unlike gst_base_rtp_depayload_push(), this function will by default apply - * the last incomming timestamp on the outgoing buffer when it didn't have a - * timestamp already. The set_get_timestamp vmethod can be overwritten to change - * this behaviour (and take, for example, @timestamp into account). - * - * Returns: a #GstFlowReturn. - */ -GstFlowReturn -gst_base_rtp_depayload_push_ts (GstBaseRTPDepayload * filter, guint32 timestamp, - GstBuffer * out_buf) -{ - GstFlowReturn res; - - res = - gst_base_rtp_depayload_prepare_push (filter, TRUE, timestamp, FALSE, - &out_buf); - - if (G_LIKELY (res == GST_FLOW_OK)) - res = gst_pad_push (filter->srcpad, out_buf); - else - gst_buffer_unref (out_buf); - - return res; -} - /** * gst_base_rtp_depayload_push: * @filter: a #GstBaseRTPDepayload @@ -603,9 +579,8 @@ gst_base_rtp_depayload_push_ts (GstBaseRTPDepayload * filter, guint32 timestamp, * Push @out_buf to the peer of @filter. This function takes ownership of * @out_buf. * - * Unlike gst_base_rtp_depayload_push_ts(), this function will not apply - * any timestamp on the outgoing buffer. Subclasses should therefore timestamp - * outgoing buffers themselves. + * This function will by default apply the last incomming timestamp on + * the outgoing buffer when it didn't have a timestamp already. * * Returns: a #GstFlowReturn. */ @@ -614,7 +589,7 @@ gst_base_rtp_depayload_push (GstBaseRTPDepayload * filter, GstBuffer * out_buf) { GstFlowReturn res; - res = gst_base_rtp_depayload_prepare_push (filter, FALSE, 0, FALSE, &out_buf); + res = gst_base_rtp_depayload_prepare_push (filter, FALSE, &out_buf); if (G_LIKELY (res == GST_FLOW_OK)) res = gst_pad_push (filter->srcpad, out_buf); @@ -642,7 +617,7 @@ gst_base_rtp_depayload_push_list (GstBaseRTPDepayload * filter, { GstFlowReturn res; - res = gst_base_rtp_depayload_prepare_push (filter, TRUE, 0, TRUE, &out_list); + res = gst_base_rtp_depayload_prepare_push (filter, TRUE, &out_list); if (G_LIKELY (res == GST_FLOW_OK)) res = gst_pad_push_list (filter->srcpad, out_list); @@ -681,26 +656,6 @@ gst_base_rtp_depayload_packet_lost (GstBaseRTPDepayload * filter, return gst_pad_push_event (filter->srcpad, sevent); } -static void -gst_base_rtp_depayload_set_gst_timestamp (GstBaseRTPDepayload * filter, - guint32 rtptime, GstBuffer * buf) -{ - GstBaseRTPDepayloadPrivate *priv; - GstClockTime timestamp, duration; - - priv = filter->priv; - - timestamp = GST_BUFFER_TIMESTAMP (buf); - duration = GST_BUFFER_DURATION (buf); - - /* apply last incomming timestamp and duration to outgoing buffer if - * not otherwise set. */ - if (!GST_CLOCK_TIME_IS_VALID (timestamp)) - GST_BUFFER_TIMESTAMP (buf) = priv->timestamp; - if (!GST_CLOCK_TIME_IS_VALID (duration)) - GST_BUFFER_DURATION (buf) = priv->duration; -} - static GstStateChangeReturn gst_base_rtp_depayload_change_state (GstElement * element, GstStateChange transition) diff --git a/gst-libs/gst/rtp/gstbasertpdepayload.h b/gst-libs/gst/rtp/gstbasertpdepayload.h index 68f178da5e..a02143f4a2 100644 --- a/gst-libs/gst/rtp/gstbasertpdepayload.h +++ b/gst-libs/gst/rtp/gstbasertpdepayload.h @@ -88,10 +88,6 @@ struct _GstBaseRTPDepayloadClass * pushed. */ GstBuffer * (*process) (GstBaseRTPDepayload *base, GstBuffer *in); - /* non-pure function used to convert from RTP timestamp to GST timestamp - * this function is used by the child class before gst_pad_pushing */ - void (*set_gst_timestamp) (GstBaseRTPDepayload *filter, guint32 timestamp, GstBuffer *buf); - /* non-pure function used to to signal the depayloader about packet loss. the * timestamp and duration are the estimated values of the lost packet. * The default implementation of this message pushes a segment update. */ @@ -108,10 +104,8 @@ struct _GstBaseRTPDepayloadClass GType gst_base_rtp_depayload_get_type (void); -GstFlowReturn gst_base_rtp_depayload_push (GstBaseRTPDepayload *filter, GstBuffer *out_buf); -GstFlowReturn gst_base_rtp_depayload_push_ts (GstBaseRTPDepayload *filter, - guint32 timestamp, GstBuffer *out_buf); -GstFlowReturn gst_base_rtp_depayload_push_list (GstBaseRTPDepayload *filter, GstBufferList *out_list); +GstFlowReturn gst_base_rtp_depayload_push (GstBaseRTPDepayload *filter, GstBuffer *out_buf); +GstFlowReturn gst_base_rtp_depayload_push_list (GstBaseRTPDepayload *filter, GstBufferList *out_list); G_END_DECLS diff --git a/gst-libs/gst/rtp/gstbasertppayload.c b/gst-libs/gst/rtp/gstbasertppayload.c index c7f66bcc7d..4a6a533738 100644 --- a/gst-libs/gst/rtp/gstbasertppayload.c +++ b/gst-libs/gst/rtp/gstbasertppayload.c @@ -91,26 +91,27 @@ enum PROP_LAST }; -static void gst_basertppayload_class_init (GstBaseRTPPayloadClass * klass); -static void gst_basertppayload_base_init (GstBaseRTPPayloadClass * klass); -static void gst_basertppayload_init (GstBaseRTPPayload * basertppayload, +static void gst_base_rtp_payload_class_init (GstBaseRTPPayloadClass * klass); +static void gst_base_rtp_payload_init (GstBaseRTPPayload * basertppayload, gpointer g_class); -static void gst_basertppayload_finalize (GObject * object); +static void gst_base_rtp_payload_finalize (GObject * object); -static GstCaps *gst_basertppayload_sink_getcaps (GstPad * pad, +static GstCaps *gst_base_rtp_payload_sink_getcaps (GstPad * pad, GstCaps * filter); -static gboolean gst_basertppayload_event_default (GstBaseRTPPayload * +static gboolean gst_base_rtp_payload_event_default (GstBaseRTPPayload * basertppayload, GstEvent * event); -static gboolean gst_basertppayload_event (GstPad * pad, GstEvent * event); -static GstFlowReturn gst_basertppayload_chain (GstPad * pad, +static gboolean gst_base_rtp_payload_event (GstPad * pad, GstEvent * event); +static GstFlowReturn gst_base_rtp_payload_chain (GstPad * pad, GstBuffer * buffer); +static GstCaps *gst_base_rtp_payload_getcaps_default (GstBaseRTPPayload * + basertppayload, GstPad * pad, GstCaps * filter); -static void gst_basertppayload_set_property (GObject * object, guint prop_id, +static void gst_base_rtp_payload_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); -static void gst_basertppayload_get_property (GObject * object, guint prop_id, +static void gst_base_rtp_payload_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); -static GstStateChangeReturn gst_basertppayload_change_state (GstElement * +static GstStateChangeReturn gst_base_rtp_payload_change_state (GstElement * element, GstStateChange transition); static GstElementClass *parent_class = NULL; @@ -118,21 +119,21 @@ static GstElementClass *parent_class = NULL; /* FIXME 0.11: API should be changed to gst_base_typ_payload_xyz */ GType -gst_basertppayload_get_type (void) +gst_base_rtp_payload_get_type (void) { static GType basertppayload_type = 0; if (g_once_init_enter ((gsize *) & basertppayload_type)) { static const GTypeInfo basertppayload_info = { sizeof (GstBaseRTPPayloadClass), - (GBaseInitFunc) gst_basertppayload_base_init, NULL, - (GClassInitFunc) gst_basertppayload_class_init, + NULL, + (GClassInitFunc) gst_base_rtp_payload_class_init, NULL, NULL, sizeof (GstBaseRTPPayload), 0, - (GInstanceInitFunc) gst_basertppayload_init, + (GInstanceInitFunc) gst_base_rtp_payload_init, }; g_once_init_leave ((gsize *) & basertppayload_type, @@ -143,12 +144,7 @@ gst_basertppayload_get_type (void) } static void -gst_basertppayload_base_init (GstBaseRTPPayloadClass * klass) -{ -} - -static void -gst_basertppayload_class_init (GstBaseRTPPayloadClass * klass) +gst_base_rtp_payload_class_init (GstBaseRTPPayloadClass * klass) { GObjectClass *gobject_class; GstElementClass *gstelement_class; @@ -160,10 +156,10 @@ gst_basertppayload_class_init (GstBaseRTPPayloadClass * klass) parent_class = g_type_class_peek_parent (klass); - gobject_class->finalize = gst_basertppayload_finalize; + gobject_class->finalize = gst_base_rtp_payload_finalize; - gobject_class->set_property = gst_basertppayload_set_property; - gobject_class->get_property = gst_basertppayload_get_property; + gobject_class->set_property = gst_base_rtp_payload_set_property; + gobject_class->get_property = gst_base_rtp_payload_get_property; g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_MTU, g_param_spec_uint ("mtu", "MTU", @@ -242,16 +238,17 @@ gst_basertppayload_class_init (GstBaseRTPPayloadClass * klass) 0, G_MAXINT64, DEFAULT_PTIME_MULTIPLE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - gstelement_class->change_state = gst_basertppayload_change_state; + gstelement_class->change_state = gst_base_rtp_payload_change_state; - klass->handle_event = gst_basertppayload_event_default; + klass->get_caps = gst_base_rtp_payload_getcaps_default; + klass->handle_event = gst_base_rtp_payload_event_default; GST_DEBUG_CATEGORY_INIT (basertppayload_debug, "basertppayload", 0, "Base class for RTP Payloaders"); } static void -gst_basertppayload_init (GstBaseRTPPayload * basertppayload, gpointer g_class) +gst_base_rtp_payload_init (GstBaseRTPPayload * basertppayload, gpointer g_class) { GstPadTemplate *templ; GstBaseRTPPayloadPrivate *priv; @@ -272,11 +269,11 @@ gst_basertppayload_init (GstBaseRTPPayload * basertppayload, gpointer g_class) basertppayload->sinkpad = gst_pad_new_from_template (templ, "sink"); gst_pad_set_getcaps_function (basertppayload->sinkpad, - gst_basertppayload_sink_getcaps); + gst_base_rtp_payload_sink_getcaps); gst_pad_set_event_function (basertppayload->sinkpad, - gst_basertppayload_event); + gst_base_rtp_payload_event); gst_pad_set_chain_function (basertppayload->sinkpad, - gst_basertppayload_chain); + gst_base_rtp_payload_chain); gst_element_add_pad (GST_ELEMENT (basertppayload), basertppayload->sinkpad); basertppayload->mtu = DEFAULT_MTU; @@ -305,7 +302,7 @@ gst_basertppayload_init (GstBaseRTPPayload * basertppayload, gpointer g_class) } static void -gst_basertppayload_finalize (GObject * object) +gst_base_rtp_payload_finalize (GObject * object) { GstBaseRTPPayload *basertppayload; @@ -320,7 +317,26 @@ gst_basertppayload_finalize (GObject * object) } static GstCaps * -gst_basertppayload_sink_getcaps (GstPad * pad, GstCaps * filter) +gst_base_rtp_payload_getcaps_default (GstBaseRTPPayload * basertppayload, + GstPad * pad, GstCaps * filter) +{ + GstCaps *caps; + + caps = GST_PAD_TEMPLATE_CAPS (GST_PAD_PAD_TEMPLATE (pad)); + GST_DEBUG_OBJECT (pad, + "using pad template %p with caps %p %" GST_PTR_FORMAT, + GST_PAD_PAD_TEMPLATE (pad), caps, caps); + + if (filter) + caps = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST); + else + caps = gst_caps_ref (caps); + + return caps; +} + +static GstCaps * +gst_base_rtp_payload_sink_getcaps (GstPad * pad, GstCaps * filter) { GstBaseRTPPayload *basertppayload; GstBaseRTPPayloadClass *basertppayload_class; @@ -334,25 +350,13 @@ gst_basertppayload_sink_getcaps (GstPad * pad, GstCaps * filter) if (basertppayload_class->get_caps) caps = basertppayload_class->get_caps (basertppayload, pad, filter); - if (!caps) { - caps = GST_PAD_TEMPLATE_CAPS (GST_PAD_PAD_TEMPLATE (pad)); - GST_DEBUG_OBJECT (pad, - "using pad template %p with caps %p %" GST_PTR_FORMAT, - GST_PAD_PAD_TEMPLATE (pad), caps, caps); - - if (filter) - caps = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST); - else - caps = gst_caps_ref (caps); - } - gst_object_unref (basertppayload); return caps; } static gboolean -gst_basertppayload_event_default (GstBaseRTPPayload * basertppayload, +gst_base_rtp_payload_event_default (GstBaseRTPPayload * basertppayload, GstEvent * event) { gboolean res = FALSE; @@ -402,7 +406,7 @@ gst_basertppayload_event_default (GstBaseRTPPayload * basertppayload, } static gboolean -gst_basertppayload_event (GstPad * pad, GstEvent * event) +gst_base_rtp_payload_event (GstPad * pad, GstEvent * event) { GstBaseRTPPayload *basertppayload; GstBaseRTPPayloadClass *basertppayload_class; @@ -428,7 +432,7 @@ gst_basertppayload_event (GstPad * pad, GstEvent * event) static GstFlowReturn -gst_basertppayload_chain (GstPad * pad, GstBuffer * buffer) +gst_base_rtp_payload_chain (GstPad * pad, GstBuffer * buffer) { GstBaseRTPPayload *basertppayload; GstBaseRTPPayloadClass *basertppayload_class; @@ -458,7 +462,7 @@ no_function: } /** - * gst_basertppayload_set_options: + * gst_base_rtp_payload_set_options: * @payload: a #GstBaseRTPPayload * @media: the media type (typically "audio" or "video") * @dynamic: if the payload type is dynamic @@ -467,10 +471,10 @@ no_function: * * 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_basertppayload_push() or gst_basertppayload_set_outcaps(). + * gst_base_rtp_payload_push() or gst_base_rtp_payload_set_outcaps(). */ void -gst_basertppayload_set_options (GstBaseRTPPayload * payload, +gst_base_rtp_payload_set_options (GstBaseRTPPayload * payload, const gchar * media, gboolean dynamic, const gchar * encoding_name, guint32 clock_rate) { @@ -510,7 +514,7 @@ update_max_ptime (GstBaseRTPPayload * basertppayload) } /** - * gst_basertppayload_set_outcaps: + * gst_base_rtp_payload_set_outcaps: * @payload: a #GstBaseRTPPayload * @fieldname: the first field name or %NULL * @...: field values @@ -523,7 +527,7 @@ update_max_ptime (GstBaseRTPPayload * basertppayload) * Returns: %TRUE if the caps could be set. */ gboolean -gst_basertppayload_set_outcaps (GstBaseRTPPayload * payload, +gst_base_rtp_payload_set_outcaps (GstBaseRTPPayload * payload, const gchar * fieldname, ...) { GstCaps *srccaps, *peercaps; @@ -667,7 +671,7 @@ gst_basertppayload_set_outcaps (GstBaseRTPPayload * payload, } /** - * gst_basertppayload_is_filled: + * gst_base_rtp_payload_is_filled: * @payload: a #GstBaseRTPPayload * @size: the size of the packet * @duration: the duration of the packet @@ -679,7 +683,7 @@ gst_basertppayload_set_outcaps (GstBaseRTPPayload * payload, * configured MTU or max_ptime. */ gboolean -gst_basertppayload_is_filled (GstBaseRTPPayload * payload, +gst_base_rtp_payload_is_filled (GstBaseRTPPayload * payload, guint size, GstClockTime duration) { if (size > payload->mtu) @@ -737,7 +741,7 @@ set_headers (GstBuffer ** buffer, guint group, guint idx, HeaderData * data) /* Updates the SSRC, payload type, seqnum and timestamp of the RTP buffer * before the buffer is pushed. */ static GstFlowReturn -gst_basertppayload_prepare_push (GstBaseRTPPayload * payload, +gst_base_rtp_payload_prepare_push (GstBaseRTPPayload * payload, gpointer obj, gboolean is_list) { GstBaseRTPPayloadPrivate *priv; @@ -822,8 +826,8 @@ gst_basertppayload_prepare_push (GstBaseRTPPayload * payload, (is_list) ? -1 : gst_buffer_get_size (GST_BUFFER (obj)), payload->seqnum, data.rtptime, GST_TIME_ARGS (data.timestamp)); - if (g_atomic_int_compare_and_exchange (&payload-> - priv->notified_first_timestamp, 1, 0)) { + if (g_atomic_int_compare_and_exchange (&payload->priv-> + notified_first_timestamp, 1, 0)) { g_object_notify (G_OBJECT (payload), "timestamp"); g_object_notify (G_OBJECT (payload), "seqnum"); } @@ -840,7 +844,7 @@ no_rate: } /** - * gst_basertppayload_push_list: + * gst_base_rtp_payload_push_list: * @payload: a #GstBaseRTPPayload * @list: a #GstBufferList * @@ -854,11 +858,12 @@ no_rate: * Since: 0.10.24 */ GstFlowReturn -gst_basertppayload_push_list (GstBaseRTPPayload * payload, GstBufferList * list) +gst_base_rtp_payload_push_list (GstBaseRTPPayload * payload, + GstBufferList * list) { GstFlowReturn res; - res = gst_basertppayload_prepare_push (payload, list, TRUE); + res = gst_base_rtp_payload_prepare_push (payload, list, TRUE); if (G_LIKELY (res == GST_FLOW_OK)) res = gst_pad_push_list (payload->srcpad, list); @@ -869,7 +874,7 @@ gst_basertppayload_push_list (GstBaseRTPPayload * payload, GstBufferList * list) } /** - * gst_basertppayload_push: + * gst_base_rtp_payload_push: * @payload: a #GstBaseRTPPayload * @buffer: a #GstBuffer * @@ -881,11 +886,11 @@ gst_basertppayload_push_list (GstBaseRTPPayload * payload, GstBufferList * list) * Returns: a #GstFlowReturn. */ GstFlowReturn -gst_basertppayload_push (GstBaseRTPPayload * payload, GstBuffer * buffer) +gst_base_rtp_payload_push (GstBaseRTPPayload * payload, GstBuffer * buffer) { GstFlowReturn res; - res = gst_basertppayload_prepare_push (payload, buffer, FALSE); + res = gst_base_rtp_payload_prepare_push (payload, buffer, FALSE); if (G_LIKELY (res == GST_FLOW_OK)) res = gst_pad_push (payload->srcpad, buffer); @@ -896,7 +901,7 @@ gst_basertppayload_push (GstBaseRTPPayload * payload, GstBuffer * buffer) } static void -gst_basertppayload_set_property (GObject * object, guint prop_id, +gst_base_rtp_payload_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { GstBaseRTPPayload *basertppayload; @@ -950,7 +955,7 @@ gst_basertppayload_set_property (GObject * object, guint prop_id, } static void -gst_basertppayload_get_property (GObject * object, guint prop_id, +gst_base_rtp_payload_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstBaseRTPPayload *basertppayload; @@ -1009,7 +1014,7 @@ gst_basertppayload_get_property (GObject * object, guint prop_id, } static GstStateChangeReturn -gst_basertppayload_change_state (GstElement * element, +gst_base_rtp_payload_change_state (GstElement * element, GstStateChange transition) { GstBaseRTPPayload *basertppayload; diff --git a/gst-libs/gst/rtp/gstbasertppayload.h b/gst-libs/gst/rtp/gstbasertppayload.h index 5588980c31..e8dff7281f 100644 --- a/gst-libs/gst/rtp/gstbasertppayload.h +++ b/gst-libs/gst/rtp/gstbasertppayload.h @@ -25,7 +25,7 @@ G_BEGIN_DECLS #define GST_TYPE_BASE_RTP_PAYLOAD \ - (gst_basertppayload_get_type()) + (gst_base_rtp_payload_get_type()) #define GST_BASE_RTP_PAYLOAD(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASE_RTP_PAYLOAD,GstBaseRTPPayload)) #define GST_BASE_RTP_PAYLOAD_CLASS(klass) \ @@ -134,7 +134,7 @@ struct _GstBaseRTPPayloadClass /* receive caps on the sink pad, configure the payloader. */ gboolean (*set_caps) (GstBaseRTPPayload *payload, GstCaps *caps); - /* handle a buffer, perform 0 or more gst_basertppayload_push() on + /* handle a buffer, perform 0 or more gst_base_rtp_payload_push() on * the RTP buffers. This function takes ownership of the buffer. */ GstFlowReturn (*handle_buffer) (GstBaseRTPPayload *payload, GstBuffer *buffer); @@ -144,24 +144,24 @@ struct _GstBaseRTPPayloadClass gpointer _gst_reserved[GST_PADDING]; }; -GType gst_basertppayload_get_type (void); +GType gst_base_rtp_payload_get_type (void); -void gst_basertppayload_set_options (GstBaseRTPPayload *payload, +void gst_base_rtp_payload_set_options (GstBaseRTPPayload *payload, const gchar *media, gboolean dynamic, const gchar *encoding_name, guint32 clock_rate); -gboolean gst_basertppayload_set_outcaps (GstBaseRTPPayload *payload, +gboolean gst_base_rtp_payload_set_outcaps (GstBaseRTPPayload *payload, const gchar *fieldname, ...); -gboolean gst_basertppayload_is_filled (GstBaseRTPPayload *payload, +gboolean gst_base_rtp_payload_is_filled (GstBaseRTPPayload *payload, guint size, GstClockTime duration); -GstFlowReturn gst_basertppayload_push (GstBaseRTPPayload *payload, +GstFlowReturn gst_base_rtp_payload_push (GstBaseRTPPayload *payload, GstBuffer *buffer); -GstFlowReturn gst_basertppayload_push_list (GstBaseRTPPayload *payload, +GstFlowReturn gst_base_rtp_payload_push_list (GstBaseRTPPayload *payload, GstBufferList *list); G_END_DECLS