rtp: fix for API changes in the base classes

This commit is contained in:
Wim Taymans 2011-06-13 13:25:49 +02:00
parent ea16d8a4d8
commit b0fbb1725f
13 changed files with 37 additions and 249 deletions

View file

@ -4,7 +4,6 @@ libgstrtp_la_SOURCES = \
fnv1hash.c \
gstrtp.c \
gstrtpchannels.c \
gstrtpdepay.c \
gstrtpac3depay.c \
gstrtpac3pay.c \
gstrtpbvdepay.c \
@ -148,7 +147,6 @@ noinst_HEADERS = \
gstrtpmp4gpay.h \
gstrtpmp4adepay.h \
gstrtpmp4apay.h \
gstrtpdepay.h \
gstasteriskh263.h \
gstrtpqcelpdepay.h \
gstrtpqdmdepay.h \

View file

@ -21,7 +21,6 @@
#include "config.h"
#endif
#include "gstrtpdepay.h"
#include "gstrtpac3depay.h"
#include "gstrtpac3pay.h"
#include "gstrtpbvdepay.h"
@ -94,9 +93,6 @@
static gboolean
plugin_init (GstPlugin * plugin)
{
if (!gst_rtp_depay_plugin_init (plugin))
return FALSE;
if (!gst_rtp_ac3_depay_plugin_init (plugin))
return FALSE;

View file

@ -55,7 +55,8 @@ static GstStateChangeReturn gst_rtp_ac3_pay_change_state (GstElement * element,
static gboolean gst_rtp_ac3_pay_setcaps (GstBaseRTPPayload * payload,
GstCaps * caps);
static gboolean gst_rtp_ac3_pay_handle_event (GstPad * pad, GstEvent * event);
static gboolean gst_rtp_ac3_pay_handle_event (GstBaseRTPPayload * payload,
GstEvent * event);
static GstFlowReturn gst_rtp_ac3_pay_flush (GstRtpAC3Pay * rtpac3pay);
static GstFlowReturn gst_rtp_ac3_pay_handle_buffer (GstBaseRTPPayload * payload,
GstBuffer * buffer);
@ -142,11 +143,12 @@ gst_rtp_ac3_pay_setcaps (GstBaseRTPPayload * payload, GstCaps * caps)
}
static gboolean
gst_rtp_ac3_pay_handle_event (GstPad * pad, GstEvent * event)
gst_rtp_ac3_pay_handle_event (GstBaseRTPPayload * payload, GstEvent * event)
{
gboolean res;
GstRtpAC3Pay *rtpac3pay;
rtpac3pay = GST_RTP_AC3_PAY (gst_pad_get_parent (pad));
rtpac3pay = GST_RTP_AC3_PAY (payload);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:
@ -160,10 +162,10 @@ gst_rtp_ac3_pay_handle_event (GstPad * pad, GstEvent * event)
break;
}
gst_object_unref (rtpac3pay);
res =
GST_BASE_RTP_PAYLOAD_CLASS (parent_class)->handle_event (payload, event);
/* FALSE to let the parent handle the event as well */
return FALSE;
return res;
}
struct frmsize_s

View file

@ -54,7 +54,7 @@ static GstStaticPadTemplate gst_rtp_bv_pay_src_template =
static GstCaps *gst_rtp_bv_pay_sink_getcaps (GstBaseRTPPayload * payload,
GstPad * pad);
GstPad * pad, GstCaps * filter);
static gboolean gst_rtp_bv_pay_sink_setcaps (GstBaseRTPPayload * payload,
GstCaps * caps);
@ -173,7 +173,8 @@ mode_changed:
/* we return the padtemplate caps with the mode field fixated to a value if we
* can */
static GstCaps *
gst_rtp_bv_pay_sink_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad)
gst_rtp_bv_pay_sink_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad,
GstCaps * filter)
{
GstCaps *otherpadcaps;
GstCaps *caps;

View file

@ -175,13 +175,11 @@ gst_rtp_celt_depay_setcaps (GstBaseRTPDepayload * depayload, GstCaps * caps)
res = gst_pad_set_caps (depayload->srcpad, srccaps);
gst_caps_unref (srccaps);
gst_buffer_set_caps (buf, GST_PAD_CAPS (depayload->srcpad));
gst_base_rtp_depayload_push (GST_BASE_RTP_DEPAYLOAD (rtpceltdepay), buf);
buf = gst_buffer_new_and_alloc (sizeof (gst_rtp_celt_comment));
gst_buffer_fill (buf, 0, gst_rtp_celt_comment, sizeof (gst_rtp_celt_comment));
gst_buffer_set_caps (buf, GST_PAD_CAPS (depayload->srcpad));
gst_base_rtp_depayload_push (GST_BASE_RTP_DEPAYLOAD (rtpceltdepay), buf);
return res;

View file

@ -58,7 +58,7 @@ static GstStateChangeReturn gst_rtp_celt_pay_change_state (GstElement *
static gboolean gst_rtp_celt_pay_setcaps (GstBaseRTPPayload * payload,
GstCaps * caps);
static GstCaps *gst_rtp_celt_pay_getcaps (GstBaseRTPPayload * payload,
GstPad * pad);
GstPad * pad, GstCaps * filter);
static GstFlowReturn gst_rtp_celt_pay_handle_buffer (GstBaseRTPPayload *
payload, GstBuffer * buffer);
@ -157,7 +157,8 @@ gst_rtp_celt_pay_setcaps (GstBaseRTPPayload * payload, GstCaps * caps)
static GstCaps *
gst_rtp_celt_pay_getcaps (GstBaseRTPPayload * payload, GstPad * pad)
gst_rtp_celt_pay_getcaps (GstBaseRTPPayload * payload, GstPad * pad,
GstCaps * filter)
{
GstCaps *otherpadcaps;
GstCaps *caps;

View file

@ -1,159 +0,0 @@
/* GStreamer
* Copyright (C) <2005> Wim Taymans <wim.taymans@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/* Element-Checklist-Version: 5 */
#include "gstrtpdepay.h"
GST_DEBUG_CATEGORY_STATIC (rtpdepay_debug);
#define GST_CAT_DEFAULT (rtpdepay_debug)
static GstStaticPadTemplate gst_rtp_depay_src_rtp_template =
GST_STATIC_PAD_TEMPLATE ("srcrtp",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-rtp")
);
static GstStaticPadTemplate gst_rtp_depay_src_rtcp_template =
GST_STATIC_PAD_TEMPLATE ("srcrtcp",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-rtcp")
);
static GstStaticPadTemplate gst_rtp_depay_sink_rtp_template =
GST_STATIC_PAD_TEMPLATE ("sinkrtp",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-rtp")
);
static GstStaticPadTemplate gst_rtp_depay_sink_rtcp_template =
GST_STATIC_PAD_TEMPLATE ("sinkrtcp",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-rtcp")
);
static GstCaps *gst_rtp_depay_getcaps (GstPad * pad);
static GstFlowReturn gst_rtp_depay_chain_rtp (GstPad * pad, GstBuffer * buffer);
static GstFlowReturn gst_rtp_depay_chain_rtcp (GstPad * pad,
GstBuffer * buffer);
G_DEFINE_TYPE (GstRTPDepay, gst_rtp_depay, GST_TYPE_ELEMENT);
static void
gst_rtp_depay_class_init (GstRTPDepayClass * klass)
{
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
GST_DEBUG_CATEGORY_INIT (rtpdepay_debug, "rtpdepay", 0, "RTP decoder");
gst_element_class_add_pad_template (gstelement_class,
gst_static_pad_template_get (&gst_rtp_depay_src_rtp_template));
gst_element_class_add_pad_template (gstelement_class,
gst_static_pad_template_get (&gst_rtp_depay_src_rtcp_template));
gst_element_class_add_pad_template (gstelement_class,
gst_static_pad_template_get (&gst_rtp_depay_sink_rtp_template));
gst_element_class_add_pad_template (gstelement_class,
gst_static_pad_template_get (&gst_rtp_depay_sink_rtcp_template));
gst_element_class_set_details_simple (gstelement_class,
"Dummy RTP session manager", "Codec/Depayloader/Network/RTP",
"Accepts raw RTP and RTCP packets and sends them forward",
"Wim Taymans <wim.taymans@gmail.com>");
}
static void
gst_rtp_depay_init (GstRTPDepay * rtpdepay)
{
/* the input rtp pad */
rtpdepay->sink_rtp =
gst_pad_new_from_static_template (&gst_rtp_depay_sink_rtp_template,
"sinkrtp");
gst_element_add_pad (GST_ELEMENT (rtpdepay), rtpdepay->sink_rtp);
gst_pad_set_getcaps_function (rtpdepay->sink_rtp, gst_rtp_depay_getcaps);
gst_pad_set_chain_function (rtpdepay->sink_rtp, gst_rtp_depay_chain_rtp);
/* the input rtcp pad */
rtpdepay->sink_rtcp =
gst_pad_new_from_static_template (&gst_rtp_depay_sink_rtcp_template,
"sinkrtcp");
gst_element_add_pad (GST_ELEMENT (rtpdepay), rtpdepay->sink_rtcp);
gst_pad_set_chain_function (rtpdepay->sink_rtcp, gst_rtp_depay_chain_rtcp);
/* the output rtp pad */
rtpdepay->src_rtp =
gst_pad_new_from_static_template (&gst_rtp_depay_src_rtp_template,
"srcrtp");
gst_pad_set_getcaps_function (rtpdepay->src_rtp, gst_rtp_depay_getcaps);
gst_element_add_pad (GST_ELEMENT (rtpdepay), rtpdepay->src_rtp);
/* the output rtcp pad */
rtpdepay->src_rtcp =
gst_pad_new_from_static_template (&gst_rtp_depay_src_rtcp_template,
"srcrtcp");
gst_element_add_pad (GST_ELEMENT (rtpdepay), rtpdepay->src_rtcp);
}
static GstCaps *
gst_rtp_depay_getcaps (GstPad * pad)
{
GstRTPDepay *src;
GstPad *other;
GstCaps *caps;
src = GST_RTP_DEPAY (GST_PAD_PARENT (pad));
other = pad == src->src_rtp ? src->sink_rtp : src->src_rtp;
caps = gst_pad_peer_get_caps (other);
if (caps == NULL)
caps = gst_caps_copy (gst_pad_get_pad_template_caps (pad));
return caps;
}
static GstFlowReturn
gst_rtp_depay_chain_rtp (GstPad * pad, GstBuffer * buffer)
{
GstRTPDepay *src;
src = GST_RTP_DEPAY (GST_PAD_PARENT (pad));
GST_DEBUG ("got rtp packet");
return gst_pad_push (src->src_rtp, buffer);
}
static GstFlowReturn
gst_rtp_depay_chain_rtcp (GstPad * pad, GstBuffer * buffer)
{
GST_DEBUG ("got rtcp packet");
gst_buffer_unref (buffer);
return GST_FLOW_OK;
}
gboolean
gst_rtp_depay_plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "rtpdepay",
GST_RANK_SECONDARY, GST_TYPE_RTP_DEPAY);
}

View file

@ -1,55 +0,0 @@
/* GStreamer
* Copyright (C) <2005> Wim Taymans <wim.taymans@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef __GST_RTP_DEPAY_H__
#define __GST_RTP_DEPAY_H__
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_RTP_DEPAY (gst_rtp_depay_get_type())
#define GST_IS_RTP_DEPAY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_DEPAY))
#define GST_IS_RTP_DEPAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_DEPAY))
#define GST_RTP_DEPAY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_DEPAY, GstRTPDepay))
#define GST_RTP_DEPAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_DEPAY, GstRTPDepayClass))
typedef struct _GstRTPDepay GstRTPDepay;
typedef struct _GstRTPDepayClass GstRTPDepayClass;
struct _GstRTPDepay {
GstElement element;
GstPad *sink_rtp;
GstPad *sink_rtcp;
GstPad *src_rtp;
GstPad *src_rtcp;
};
struct _GstRTPDepayClass {
GstElementClass parent_class;
};
gboolean gst_rtp_depay_plugin_init (GstPlugin * plugin);
GType gst_rtp_depay_get_type(void);
G_END_DECLS
#endif /* __GST_RTP_DEPAY_H__ */

View file

@ -54,7 +54,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
static gboolean gst_rtp_g722_pay_setcaps (GstBaseRTPPayload * basepayload,
GstCaps * caps);
static GstCaps *gst_rtp_g722_pay_getcaps (GstBaseRTPPayload * rtppayload,
GstPad * pad);
GstPad * pad, GstCaps * filter);
#define gst_rtp_g722_pay_parent_class parent_class
G_DEFINE_TYPE (GstRtpG722Pay, gst_rtp_g722_pay,
@ -177,7 +177,8 @@ no_channels:
}
static GstCaps *
gst_rtp_g722_pay_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad)
gst_rtp_g722_pay_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad,
GstCaps * filter)
{
GstCaps *otherpadcaps;
GstCaps *caps;

View file

@ -181,7 +181,7 @@ gst_rtp_g726_pay_setcaps (GstBaseRTPPayload * payload, GstCaps * caps)
GST_DEBUG_OBJECT (payload, "selected base encoding %s", encoding_name);
/* now see if we need to produce AAL2 or not */
peercaps = gst_pad_peer_get_caps (payload->srcpad);
peercaps = gst_pad_peer_get_caps (payload->srcpad, NULL);
if (peercaps) {
GstCaps *filter, *intersect;
gchar *capsstr;

View file

@ -49,7 +49,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
static GstCaps *gst_rtp_ilbc_pay_sink_getcaps (GstBaseRTPPayload * payload,
GstPad * pad);
GstPad * pad, GstCaps * filter);
static gboolean gst_rtp_ilbc_pay_sink_setcaps (GstBaseRTPPayload * payload,
GstCaps * caps);
@ -175,7 +175,8 @@ mode_changed:
/* we return the padtemplate caps with the mode field fixated to a value if we
* can */
static GstCaps *
gst_rtp_ilbc_pay_sink_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad)
gst_rtp_ilbc_pay_sink_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad,
GstCaps * filter)
{
GstCaps *otherpadcaps;
GstCaps *caps;

View file

@ -58,7 +58,8 @@ static GstStateChangeReturn gst_rtp_mpa_pay_change_state (GstElement * element,
static gboolean gst_rtp_mpa_pay_setcaps (GstBaseRTPPayload * payload,
GstCaps * caps);
static gboolean gst_rtp_mpa_pay_handle_event (GstPad * pad, GstEvent * event);
static gboolean gst_rtp_mpa_pay_handle_event (GstBaseRTPPayload * payload,
GstEvent * event);
static GstFlowReturn gst_rtp_mpa_pay_flush (GstRtpMPAPay * rtpmpapay);
static GstFlowReturn gst_rtp_mpa_pay_handle_buffer (GstBaseRTPPayload * payload,
GstBuffer * buffer);
@ -139,11 +140,12 @@ gst_rtp_mpa_pay_setcaps (GstBaseRTPPayload * payload, GstCaps * caps)
}
static gboolean
gst_rtp_mpa_pay_handle_event (GstPad * pad, GstEvent * event)
gst_rtp_mpa_pay_handle_event (GstBaseRTPPayload * payload, GstEvent * event)
{
gboolean ret;
GstRtpMPAPay *rtpmpapay;
rtpmpapay = GST_RTP_MPA_PAY (gst_pad_get_parent (pad));
rtpmpapay = GST_RTP_MPA_PAY (payload);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:
@ -157,10 +159,10 @@ gst_rtp_mpa_pay_handle_event (GstPad * pad, GstEvent * event)
break;
}
gst_object_unref (rtpmpapay);
ret =
GST_BASE_RTP_PAYLOAD_CLASS (parent_class)->handle_event (payload, event);
/* FALSE to let the parent handle the event as well */
return FALSE;
return ret;
}
static GstFlowReturn

View file

@ -58,7 +58,8 @@ static gboolean gst_rtp_mpv_pay_setcaps (GstBaseRTPPayload * payload,
GstCaps * caps);
static GstFlowReturn gst_rtp_mpv_pay_handle_buffer (GstBaseRTPPayload *
payload, GstBuffer * buffer);
static gboolean gst_rtp_mpv_pay_handle_event (GstPad * pad, GstEvent * event);
static gboolean gst_rtp_mpv_pay_handle_event (GstBaseRTPPayload * payload,
GstEvent * event);
#define gst_rtp_mpv_pay_parent_class parent_class
G_DEFINE_TYPE (GstRTPMPVPay, gst_rtp_mpv_pay, GST_TYPE_BASE_RTP_PAYLOAD);
@ -135,11 +136,12 @@ gst_rtp_mpv_pay_setcaps (GstBaseRTPPayload * payload, GstCaps * caps)
}
static gboolean
gst_rtp_mpv_pay_handle_event (GstPad * pad, GstEvent * event)
gst_rtp_mpv_pay_handle_event (GstBaseRTPPayload * payload, GstEvent * event)
{
gboolean ret;
GstRTPMPVPay *rtpmpvpay;
rtpmpvpay = GST_RTP_MPV_PAY (gst_pad_get_parent (pad));
rtpmpvpay = GST_RTP_MPV_PAY (payload);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:
@ -153,10 +155,10 @@ gst_rtp_mpv_pay_handle_event (GstPad * pad, GstEvent * event)
break;
}
gst_object_unref (rtpmpvpay);
ret =
GST_BASE_RTP_PAYLOAD_CLASS (parent_class)->handle_event (payload, event);
/* FALSE to let the parent handle the event as well */
return FALSE;
return ret;
}
static GstFlowReturn