const GValue * value, GParamSpec * pspec);
static gboolean gst_cmml_dec_sink_query (GstPad * pad, GstObject * parent,
GstQuery * query);
-static gboolean gst_cmml_dec_sink_event (GstPad * pad, GstEvent * event);
+static gboolean gst_cmml_dec_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static gboolean gst_cmml_dec_convert (GstPad * pad, GstFormat src_fmt,
gint64 src_val, GstFormat * dest_fmt, gint64 * dest_val);
static GstStateChangeReturn gst_cmml_dec_change_state (GstElement * element,
GstStateChange transition);
-static GstFlowReturn gst_cmml_dec_chain (GstPad * pad, GstBuffer * buffer);
+static GstFlowReturn gst_cmml_dec_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
static GstCmmlPacketType gst_cmml_dec_parse_packet_type (GstCmmlDec * dec,
gchar * data, gsize size);
}
static gboolean
-gst_cmml_dec_sink_event (GstPad * pad, GstEvent * event)
+gst_cmml_dec_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
- GstCmmlDec *dec = GST_CMML_DEC (GST_PAD_PARENT (pad));
+ GstCmmlDec *dec = GST_CMML_DEC (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:
break;
}
- return gst_pad_event_default (pad, event);
+ return gst_pad_event_default (pad, parent, event);
}
static GstFlowReturn
-gst_cmml_dec_chain (GstPad * pad, GstBuffer * buffer)
+gst_cmml_dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
- GstCmmlDec *dec = GST_CMML_DEC (GST_PAD_PARENT (pad));
+ GstCmmlDec *dec = GST_CMML_DEC (parent);
GstCmmlPacketType packet;
guint8 *data;
gsize size;
GValue * value, GParamSpec * pspec);
static void gst_cmml_enc_set_property (GObject * object, guint property_id,
const GValue * value, GParamSpec * pspec);
-static gboolean gst_cmml_enc_sink_event (GstPad * pad, GstEvent * event);
+static gboolean gst_cmml_enc_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstStateChangeReturn gst_cmml_enc_change_state (GstElement * element,
GstStateChange transition);
-static GstFlowReturn gst_cmml_enc_chain (GstPad * pad, GstBuffer * buffer);
-static void gst_cmml_enc_parse_preamble (GstCmmlEnc * enc,
- guchar * preamble, guchar * processing_instruction);
+static GstFlowReturn gst_cmml_enc_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
+static void gst_cmml_enc_parse_preamble (GstCmmlEnc * enc, guchar * preamble,
+ guchar * processing_instruction);
static void gst_cmml_enc_parse_end_tag (GstCmmlEnc * enc);
static void gst_cmml_enc_parse_tag_head (GstCmmlEnc * enc,
GstCmmlTagHead * head);
}
static gboolean
-gst_cmml_enc_sink_event (GstPad * pad, GstEvent * event)
+gst_cmml_enc_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
- GstCmmlEnc *enc = GST_CMML_ENC (GST_PAD_PARENT (pad));
+ GstCmmlEnc *enc = GST_CMML_ENC (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:
break;
}
- return gst_pad_event_default (pad, event);
+ return gst_pad_event_default (pad, parent, event);
}
static GstFlowReturn
}
static GstFlowReturn
-gst_cmml_enc_chain (GstPad * pad, GstBuffer * buffer)
+gst_cmml_enc_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GError *err = NULL;
- GstCmmlEnc *enc = GST_CMML_ENC (GST_PAD_PARENT (pad));
+ GstCmmlEnc *enc = GST_CMML_ENC (parent);
gchar *data;
gsize size;
static void gst_flac_tag_dispose (GObject * object);
-static GstFlowReturn gst_flac_tag_chain (GstPad * pad, GstBuffer * buffer);
+static GstFlowReturn gst_flac_tag_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
static GstStateChangeReturn gst_flac_tag_change_state (GstElement * element,
GstStateChange transition);
-static gboolean gst_flac_tag_sink_event (GstPad * pad, GstEvent * event);
+static gboolean gst_flac_tag_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
#define gst_flac_tag_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstFlacTag, gst_flac_tag, GST_TYPE_ELEMENT,
}
static gboolean
-gst_flac_tag_sink_event (GstPad * pad, GstEvent * event)
+gst_flac_tag_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
gboolean ret;
switch (GST_EVENT_TYPE (event)) {
default:
- ret = gst_pad_event_default (pad, event);
+ ret = gst_pad_event_default (pad, parent, event);
break;
}
#define FLAC_MAGIC_SIZE (sizeof (FLAC_MAGIC) - 1)
static GstFlowReturn
-gst_flac_tag_chain (GstPad * pad, GstBuffer * buffer)
+gst_flac_tag_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstFlacTag *tag;
GstFlowReturn ret;
gsize size;
ret = GST_FLOW_OK;
- tag = GST_FLAC_TAG (gst_pad_get_parent (pad));
+ tag = GST_FLAC_TAG (parent);
gst_adapter_push (tag->adapter, buffer);
}
cleanup:
- gst_object_unref (tag);
return ret;
static void gst_jpeg_dec_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
-static GstFlowReturn gst_jpeg_dec_chain (GstPad * pad, GstBuffer * buffer);
+static GstFlowReturn gst_jpeg_dec_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
static GstCaps *gst_jpeg_dec_getcaps (GstPad * pad, GstCaps * filter);
static gboolean gst_jpeg_dec_sink_query (GstPad * pad, GstObject * parent,
GstQuery * query);
-static gboolean gst_jpeg_dec_sink_event (GstPad * pad, GstEvent * event);
-static gboolean gst_jpeg_dec_src_event (GstPad * pad, GstEvent * event);
+static gboolean gst_jpeg_dec_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static gboolean gst_jpeg_dec_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstStateChangeReturn gst_jpeg_dec_change_state (GstElement * element,
GstStateChange transition);
static void gst_jpeg_dec_update_qos (GstJpegDec * dec, gdouble proportion,
}
static GstFlowReturn
-gst_jpeg_dec_chain (GstPad * pad, GstBuffer * buf)
+gst_jpeg_dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
GstFlowReturn ret = GST_FLOW_OK;
GstJpegDec *dec;
GstClockTime timestamp, duration;
GstVideoFrame frame;
- dec = GST_JPEG_DEC (GST_PAD_PARENT (pad));
+ dec = GST_JPEG_DEC (parent);
timestamp = GST_BUFFER_TIMESTAMP (buf);
duration = GST_BUFFER_DURATION (buf);
}
static gboolean
-gst_jpeg_dec_src_event (GstPad * pad, GstEvent * event)
+gst_jpeg_dec_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstJpegDec *dec;
gboolean res;
- dec = GST_JPEG_DEC (gst_pad_get_parent (pad));
- if (G_UNLIKELY (dec == NULL)) {
- gst_event_unref (event);
- return FALSE;
- }
+ dec = GST_JPEG_DEC (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_QOS:{
res = gst_pad_push_event (dec->sinkpad, event);
- gst_object_unref (dec);
return res;
}
static gboolean
-gst_jpeg_dec_sink_event (GstPad * pad, GstEvent * event)
+gst_jpeg_dec_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
gboolean ret = TRUE, forward = TRUE;
- GstJpegDec *dec = GST_JPEG_DEC (GST_OBJECT_PARENT (pad));
+ GstJpegDec *dec = GST_JPEG_DEC (parent);
GST_DEBUG_OBJECT (dec, "event : %s", GST_EVENT_TYPE_NAME (event));
static void gst_jpegenc_reset (GstJpegEnc * enc);
static void gst_jpegenc_finalize (GObject * object);
-static GstFlowReturn gst_jpegenc_chain (GstPad * pad, GstBuffer * buf);
-static gboolean gst_jpegenc_sink_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_jpegenc_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf);
+static gboolean gst_jpegenc_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstCaps *gst_jpegenc_getcaps (GstPad * pad, GstCaps * filter);
static gboolean gst_jpegenc_sink_query (GstPad * pad, GstObject * parent,
GstQuery * query);
}
static gboolean
-gst_jpegenc_sink_event (GstPad * pad, GstEvent * event)
+gst_jpegenc_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
gboolean res;
- GstJpegEnc *enc = GST_JPEGENC (gst_pad_get_parent (pad));
+ GstJpegEnc *enc = GST_JPEGENC (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS:
gst_event_parse_caps (event, &caps);
res = gst_jpegenc_setcaps (enc, caps);
+ gst_event_unref (event);
break;
}
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
- gst_object_unref (enc);
-
return res;
}
}
static GstFlowReturn
-gst_jpegenc_chain (GstPad * pad, GstBuffer * buf)
+gst_jpegenc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
GstFlowReturn ret;
GstJpegEnc *jpegenc;
GstBuffer *outbuf;
GstVideoFrame frame;
- jpegenc = GST_JPEGENC (GST_OBJECT_PARENT (pad));
+ jpegenc = GST_JPEGENC (parent);
if (G_UNLIKELY (GST_VIDEO_INFO_FORMAT (&jpegenc->info) ==
GST_VIDEO_FORMAT_UNKNOWN))
static void gst_pulse_audio_sink_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
static void gst_pulse_audio_sink_dispose (GObject * object);
-static gboolean gst_pulse_audio_sink_src_event (GstPad * pad, GstEvent * event);
+static gboolean gst_pulse_audio_sink_src_event (GstPad * pad,
+ GstObject * parent, GstEvent * event);
static gboolean gst_pulse_audio_sink_sink_event (GstPad * pad,
- GstEvent * event);
+ GstObject * parent, GstEvent * event);
static gboolean gst_pulse_audio_sink_sink_query (GstPad * pad,
GstObject * parent, GstQuery * query);
static gboolean gst_pulse_audio_sink_sink_acceptcaps (GstPulseAudioSink * pbin,
}
static gboolean
-gst_pulse_audio_sink_src_event (GstPad * pad, GstEvent * event)
+gst_pulse_audio_sink_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstPulseAudioSink *pbin = NULL;
GstPad *ghostpad = NULL;
gboolean ret = FALSE;
- ghostpad = GST_PAD_CAST (gst_pad_get_parent (pad));
+ ghostpad = GST_PAD_CAST (parent);
if (G_UNLIKELY (!ghostpad)) {
GST_WARNING_OBJECT (pad, "Could not get ghostpad");
goto out;
ret = TRUE;
} else if (pbin->proxypad_old_eventfunc) {
- ret = pbin->proxypad_old_eventfunc (pad, event);
+ ret = pbin->proxypad_old_eventfunc (pad, parent, event);
event = NULL;
}
out:
- if (ghostpad)
- gst_object_unref (ghostpad);
if (pbin)
gst_object_unref (pbin);
if (event)
}
static gboolean
-gst_pulse_audio_sink_sink_event (GstPad * pad, GstEvent * event)
+gst_pulse_audio_sink_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
- GstPulseAudioSink *pbin = GST_PULSE_AUDIO_SINK (gst_pad_get_parent (pad));
+ GstPulseAudioSink *pbin = GST_PULSE_AUDIO_SINK (parent);
gboolean ret;
gboolean forward = TRUE;
}
if (forward)
- ret = pbin->sinkpad_old_eventfunc (pad, event);
+ ret = pbin->sinkpad_old_eventfunc (pad, parent, event);
else
gst_event_unref (event);
- gst_object_unref (pbin);
-
return ret;
}
static void gst_au_parse_dispose (GObject * object);
-static GstFlowReturn gst_au_parse_chain (GstPad * pad, GstBuffer * buf);
+static GstFlowReturn gst_au_parse_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf);
static GstStateChangeReturn gst_au_parse_change_state (GstElement * element,
GstStateChange transition);
static void gst_au_parse_reset (GstAuParse * auparse);
static gboolean gst_au_parse_src_query (GstPad * pad, GstObject * parent,
GstQuery * query);
-static gboolean gst_au_parse_src_event (GstPad * pad, GstEvent * event);
-static gboolean gst_au_parse_sink_event (GstPad * pad, GstEvent * event);
+static gboolean gst_au_parse_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static gboolean gst_au_parse_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static gboolean gst_au_parse_src_convert (GstAuParse * auparse,
GstFormat src_format, gint64 srcval, GstFormat dest_format,
gint64 * destval);
#define AU_HEADER_SIZE 24
static GstFlowReturn
-gst_au_parse_chain (GstPad * pad, GstBuffer * buf)
+gst_au_parse_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
GstFlowReturn ret = GST_FLOW_OK;
GstAuParse *auparse;
gint64 offset;
GstSegment segment;
- auparse = GST_AU_PARSE (gst_pad_get_parent (pad));
+ auparse = GST_AU_PARSE (parent);
GST_LOG_OBJECT (auparse, "got buffer of size %u", gst_buffer_get_size (buf));
out:
- gst_object_unref (auparse);
return ret;
}
}
static gboolean
-gst_au_parse_sink_event (GstPad * pad, GstEvent * event)
+gst_au_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstAuParse *auparse;
gboolean ret = TRUE;
- auparse = GST_AU_PARSE (gst_pad_get_parent (pad));
+ auparse = GST_AU_PARSE (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS:
}
/* fall-through */
default:
- ret = gst_pad_event_default (pad, event);
+ ret = gst_pad_event_default (pad, parent, event);
break;
}
- gst_object_unref (auparse);
return ret;
}
static gboolean
-gst_au_parse_src_event (GstPad * pad, GstEvent * event)
+gst_au_parse_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstAuParse *auparse;
gboolean ret;
- auparse = GST_AU_PARSE (gst_pad_get_parent (pad));
+ auparse = GST_AU_PARSE (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_SEEK:
ret = gst_au_parse_handle_seek (auparse, event);
break;
default:
- ret = gst_pad_event_default (pad, event);
+ ret = gst_pad_event_default (pad, parent, event);
break;
}
- gst_object_unref (auparse);
return ret;
}
#if 0
static const GstEventMask *gst_avi_demux_get_event_mask (GstPad * pad);
#endif
-static gboolean gst_avi_demux_handle_src_event (GstPad * pad, GstEvent * event);
+static gboolean gst_avi_demux_handle_src_event (GstPad * pad,
+ GstObject * parent, GstEvent * event);
static gboolean gst_avi_demux_handle_sink_event (GstPad * pad,
- GstEvent * event);
+ GstObject * parent, GstEvent * event);
static gboolean gst_avi_demux_push_event (GstAviDemux * avi, GstEvent * event);
#if 0
static gboolean gst_avi_demux_sink_activate_pull (GstPad * sinkpad,
gboolean active);
static gboolean gst_avi_demux_activate_push (GstPad * pad, gboolean active);
-static GstFlowReturn gst_avi_demux_chain (GstPad * pad, GstBuffer * buf);
+static GstFlowReturn gst_avi_demux_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf);
static void gst_avi_demux_set_index (GstElement * element, GstIndex * index);
static GstIndex *gst_avi_demux_get_index (GstElement * element);
#define GST_AVI_SEEK_PUSH_DISPLACE (4 * GST_SECOND)
static gboolean
-gst_avi_demux_handle_sink_event (GstPad * pad, GstEvent * event)
+gst_avi_demux_handle_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
gboolean res = TRUE;
- GstAviDemux *avi = GST_AVI_DEMUX (gst_pad_get_parent (pad));
+ GstAviDemux *avi = GST_AVI_DEMUX (parent);
GST_DEBUG_OBJECT (avi,
"have event type %s: %p on sink pad", GST_EVENT_TYPE_NAME (event), event);
/* fall through to default case so that the event gets passed downstream */
}
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
- gst_object_unref (avi);
-
return res;
}
static gboolean
-gst_avi_demux_handle_src_event (GstPad * pad, GstEvent * event)
+gst_avi_demux_handle_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
gboolean res = TRUE;
- GstAviDemux *avi = GST_AVI_DEMUX (gst_pad_get_parent (pad));
+ GstAviDemux *avi = GST_AVI_DEMUX (parent);
GST_DEBUG_OBJECT (avi,
"have event type %s: %p on src pad", GST_EVENT_TYPE_NAME (event), event);
gst_event_unref (event);
break;
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
- gst_object_unref (avi);
-
return res;
}
static GstFlowReturn
-gst_avi_demux_chain (GstPad * pad, GstBuffer * buf)
+gst_avi_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
GstFlowReturn res;
- GstAviDemux *avi = GST_AVI_DEMUX (GST_PAD_PARENT (pad));
+ GstAviDemux *avi = GST_AVI_DEMUX (parent);
gint i;
if (GST_BUFFER_IS_DISCONT (buf)) {
static GstFlowReturn gst_avi_mux_collect_pads (GstCollectPads * pads,
GstAviMux * avimux);
-static gboolean gst_avi_mux_handle_event (GstPad * pad, GstEvent * event);
+static gboolean gst_avi_mux_handle_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstPad *gst_avi_mux_request_new_pad (GstElement * element,
GstPadTemplate * templ, const gchar * name, const GstCaps * caps);
static void gst_avi_mux_release_pad (GstElement * element, GstPad * pad);
/* FIXME: hacked way to override/extend the event function of
* GstCollectPads; because it sets its own event function giving the
* element no access to events */
- avimux->collect_event = (GstPadEventFunction) GST_PAD_EVENTFUNC (newpad);
+ avimux->collect_event = GST_PAD_EVENTFUNC (newpad);
gst_pad_set_event_function (newpad,
GST_DEBUG_FUNCPTR (gst_avi_mux_handle_event));
/* handle events (search) */
static gboolean
-gst_avi_mux_handle_event (GstPad * pad, GstEvent * event)
+gst_avi_mux_handle_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstAviMux *avimux;
gboolean ret = TRUE;
- avimux = GST_AVI_MUX (gst_pad_get_parent (pad));
+ avimux = GST_AVI_MUX (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS:
/* now GstCollectPads can take care of the rest, e.g. EOS */
if (ret)
- ret = avimux->collect_event (pad, event);
-
- gst_object_unref (avimux);
+ ret = avimux->collect_event (pad, parent, event);
return ret;
}
);
static void gst_avi_subtitle_title_tag (GstAviSubtitle * sub, gchar * title);
-static GstFlowReturn gst_avi_subtitle_chain (GstPad * pad, GstBuffer * buffer);
+static GstFlowReturn gst_avi_subtitle_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
static GstStateChangeReturn gst_avi_subtitle_change_state (GstElement * element,
GstStateChange transition);
static gboolean gst_avi_subtitle_send_event (GstElement * element,
}
static GstFlowReturn
-gst_avi_subtitle_chain (GstPad * pad, GstBuffer * buffer)
+gst_avi_subtitle_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
- GstAviSubtitle *sub = GST_AVI_SUBTITLE (GST_PAD_PARENT (pad));
+ GstAviSubtitle *sub = GST_AVI_SUBTITLE (parent);
GstFlowReturn ret;
if (sub->subfile != NULL) {
static void gst_cutter_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
-static gboolean gst_cutter_event (GstPad * pad, GstEvent * event);
-static GstFlowReturn gst_cutter_chain (GstPad * pad, GstBuffer * buffer);
+static gboolean gst_cutter_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static GstFlowReturn gst_cutter_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
static void
gst_cutter_class_init (GstCutterClass * klass)
}
static gboolean
-gst_cutter_event (GstPad * pad, GstEvent * event)
+gst_cutter_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
gboolean ret;
GstCutter *filter;
- filter = GST_CUTTER (GST_OBJECT_PARENT (pad));
+ filter = GST_CUTTER (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS:
gst_event_parse_caps (event, &caps);
ret = gst_cutter_setcaps (filter, caps);
+ gst_event_unref (event);
break;
}
default:
- ret = gst_pad_event_default (pad, event);
+ ret = gst_pad_event_default (pad, parent, event);
break;
}
return ret;
}
static GstFlowReturn
-gst_cutter_chain (GstPad * pad, GstBuffer * buf)
+gst_cutter_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
GstFlowReturn ret = GST_FLOW_OK;
GstCutter *filter;
GstBuffer *prebuf; /* pointer to a prebuffer element */
GstClockTime duration;
- filter = GST_CUTTER (GST_OBJECT_PARENT (pad));
+ filter = GST_CUTTER (parent);
if (GST_AUDIO_INFO_FORMAT (&filter->info) == GST_AUDIO_FORMAT_UNKNOWN)
goto not_negotiated;
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("I420"))
);
-static GstVideoFilterClass *parent_class = NULL;
+#define gst_navigationtest_parent_class parent_class
+G_DEFINE_TYPE (GstNavigationtest, gst_navigationtest, GST_TYPE_VIDEO_FILTER);
static gboolean
-gst_navigationtest_handle_src_event (GstPad * pad, GstEvent * event)
+gst_navigationtest_src_event (GstBaseTransform * trans, GstEvent * event)
{
GstNavigationtest *navtest;
const gchar *type;
- navtest = GST_NAVIGATIONTEST (GST_PAD_PARENT (pad));
+ navtest = GST_NAVIGATIONTEST (trans);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_NAVIGATION:
default:
break;
}
- return gst_pad_event_default (pad, event);
+ return GST_BASE_TRANSFORM_CLASS (parent_class)->src_event (trans, event);
}
/* Useful macros */
}
static void
-gst_navigationtest_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details_simple (element_class, "Video navigation test",
- "Filter/Effect/Video",
- "Handle navigation events showing a black square following mouse pointer",
- "David Schleef <ds@schleef.org>");
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_navigationtest_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_navigationtest_src_template));
-}
-
-static void
-gst_navigationtest_class_init (gpointer klass, gpointer class_data)
+gst_navigationtest_class_init (GstNavigationtestClass * klass)
{
GstElementClass *element_class;
GstBaseTransformClass *trans_class;
element_class->change_state =
GST_DEBUG_FUNCPTR (gst_navigationtest_change_state);
+ gst_element_class_set_details_simple (element_class, "Video navigation test",
+ "Filter/Effect/Video",
+ "Handle navigation events showing a black square following mouse pointer",
+ "David Schleef <ds@schleef.org>");
+
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&gst_navigationtest_sink_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&gst_navigationtest_src_template));
+
trans_class->set_caps = GST_DEBUG_FUNCPTR (gst_navigationtest_set_caps);
trans_class->get_unit_size =
GST_DEBUG_FUNCPTR (gst_navigationtest_get_unit_size);
trans_class->transform = GST_DEBUG_FUNCPTR (gst_navigationtest_transform);
+ trans_class->src_event = GST_DEBUG_FUNCPTR (gst_navigationtest_src_event);
}
static void
-gst_navigationtest_init (GTypeInstance * instance, gpointer g_class)
+gst_navigationtest_init (GstNavigationtest * navtest)
{
- GstNavigationtest *navtest = GST_NAVIGATIONTEST (instance);
- GstBaseTransform *btrans = GST_BASE_TRANSFORM (instance);
-
- gst_pad_set_event_function (btrans->srcpad,
- GST_DEBUG_FUNCPTR (gst_navigationtest_handle_src_event));
-
navtest->x = -1;
navtest->y = -1;
}
-GType
-gst_navigationtest_get_type (void)
-{
- static GType navigationtest_type = 0;
-
- if (!navigationtest_type) {
- static const GTypeInfo navigationtest_info = {
- sizeof (GstNavigationtestClass),
- gst_navigationtest_base_init,
- NULL,
- gst_navigationtest_class_init,
- NULL,
- NULL,
- sizeof (GstNavigationtest),
- 0,
- gst_navigationtest_init,
- };
-
- navigationtest_type = g_type_register_static (GST_TYPE_VIDEO_FILTER,
- "GstNavigationtest", &navigationtest_info, 0);
- }
- return navigationtest_type;
-}
-
static gboolean
plugin_init (GstPlugin * plugin)
{
static gboolean gst_flv_demux_query (GstPad * pad, GstObject * parent,
GstQuery * query);
-static gboolean gst_flv_demux_src_event (GstPad * pad, GstEvent * event);
+static gboolean gst_flv_demux_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static void
}
static GstFlowReturn
-gst_flv_demux_chain (GstPad * pad, GstBuffer * buffer)
+gst_flv_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstFlowReturn ret = GST_FLOW_OK;
GstFlvDemux *demux = NULL;
- demux = GST_FLV_DEMUX (gst_pad_get_parent (pad));
+ demux = GST_FLV_DEMUX (parent);
GST_LOG_OBJECT (demux, "received buffer of %d bytes at offset %"
G_GUINT64_FORMAT, gst_buffer_get_size (buffer),
}
}
- gst_object_unref (demux);
-
return ret;
/* ERRORS */
}
static gboolean
-gst_flv_demux_sink_event (GstPad * pad, GstEvent * event)
+gst_flv_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstFlvDemux *demux;
gboolean ret = FALSE;
- demux = GST_FLV_DEMUX (gst_pad_get_parent (pad));
+ demux = GST_FLV_DEMUX (parent);
GST_DEBUG_OBJECT (demux, "handling event %s", GST_EVENT_TYPE_NAME (event));
break;
}
- gst_object_unref (demux);
-
return ret;
}
static gboolean
-gst_flv_demux_src_event (GstPad * pad, GstEvent * event)
+gst_flv_demux_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstFlvDemux *demux;
gboolean ret = FALSE;
- demux = GST_FLV_DEMUX (gst_pad_get_parent (pad));
+ demux = GST_FLV_DEMUX (parent);
GST_DEBUG_OBJECT (demux, "handling event %s", GST_EVENT_TYPE_NAME (event));
break;
}
- gst_object_unref (demux);
-
return ret;
}
static GstFlowReturn
gst_flv_mux_collected (GstCollectPads * pads, gpointer user_data);
-static gboolean gst_flv_mux_handle_src_event (GstPad * pad, GstEvent * event);
+static gboolean gst_flv_mux_handle_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstPad *gst_flv_mux_request_new_pad (GstElement * element,
GstPadTemplate * templ, const gchar * req_name, const GstCaps * caps);
static void gst_flv_mux_release_pad (GstElement * element, GstPad * pad);
}
static gboolean
-gst_flv_mux_handle_src_event (GstPad * pad, GstEvent * event)
+gst_flv_mux_handle_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstEventType type;
break;
}
- return gst_pad_event_default (pad, event);
+ return gst_pad_event_default (pad, parent, event);
}
static gboolean
-gst_flv_mux_handle_sink_event (GstPad * pad, GstEvent * event)
+gst_flv_mux_handle_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
- GstFlvMux *mux = GST_FLV_MUX (gst_pad_get_parent (pad));
+ GstFlvMux *mux = GST_FLV_MUX (parent);
gboolean ret = TRUE;
switch (GST_EVENT_TYPE (event)) {
/* now GstCollectPads can take care of the rest, e.g. EOS */
if (ret)
- ret = mux->collect_event (pad, event);
- gst_object_unref (mux);
+ ret = mux->collect_event (pad, parent, event);
return ret;
}
static GstStateChangeReturn gst_goom_change_state (GstElement * element,
GstStateChange transition);
-static GstFlowReturn gst_goom_chain (GstPad * pad, GstBuffer * buffer);
-static gboolean gst_goom_src_event (GstPad * pad, GstEvent * event);
-static gboolean gst_goom_sink_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_goom_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
+static gboolean gst_goom_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static gboolean gst_goom_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static gboolean gst_goom_src_query (GstPad * pad, GstObject * parent,
GstQuery * query);
}
static gboolean
-gst_goom_src_event (GstPad * pad, GstEvent * event)
+gst_goom_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
gboolean res;
GstGoom *goom;
- goom = GST_GOOM (GST_PAD_PARENT (pad));
+ goom = GST_GOOM (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_QOS:
}
static gboolean
-gst_goom_sink_event (GstPad * pad, GstEvent * event)
+gst_goom_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
gboolean res;
GstGoom *goom;
- goom = GST_GOOM (GST_PAD_PARENT (pad));
+ goom = GST_GOOM (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS:
static GstFlowReturn
-gst_goom_chain (GstPad * pad, GstBuffer * buffer)
+gst_goom_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstGoom *goom;
GstFlowReturn ret;
GstBuffer *outbuf = NULL;
- goom = GST_GOOM (GST_PAD_PARENT (pad));
+ goom = GST_GOOM (parent);
if (goom->bps == 0) {
ret = GST_FLOW_NOT_NEGOTIATED;
goto beach;
static void gst_icydemux_dispose (GObject * object);
-static GstFlowReturn gst_icydemux_chain (GstPad * pad, GstBuffer * buf);
-static gboolean gst_icydemux_handle_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_icydemux_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf);
+static gboolean gst_icydemux_handle_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static gboolean gst_icydemux_add_srcpad (GstICYDemux * icydemux,
GstCaps * new_caps);
}
static gboolean
-gst_icydemux_handle_event (GstPad * pad, GstEvent * event)
+gst_icydemux_handle_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
- GstICYDemux *icydemux = GST_ICYDEMUX (GST_PAD_PARENT (pad));
+ GstICYDemux *icydemux = GST_ICYDEMUX (parent);
gboolean result;
switch (GST_EVENT_TYPE (event)) {
g_list_free (icydemux->cached_events);
icydemux->cached_events = NULL;
- return gst_pad_event_default (pad, event);
+ return gst_pad_event_default (pad, parent, event);
default:
icydemux->cached_events = g_list_append (icydemux->cached_events,
event);
return TRUE;
}
} else {
- return gst_pad_event_default (pad, event);
+ return gst_pad_event_default (pad, parent, event);
}
}
}
static GstFlowReturn
-gst_icydemux_chain (GstPad * pad, GstBuffer * buf)
+gst_icydemux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
GstICYDemux *icydemux;
guint size, chunk, offset;
GstBuffer *sub;
GstFlowReturn ret = GST_FLOW_OK;
- icydemux = GST_ICYDEMUX (GST_PAD_PARENT (pad));
+ icydemux = GST_ICYDEMUX (parent);
if (G_UNLIKELY (icydemux->meta_interval < 0))
goto not_negotiated;
static void gst_qt_mux_release_pad (GstElement * element, GstPad * pad);
/* event */
-static gboolean gst_qt_mux_sink_event (GstPad * pad, GstEvent * event);
+static gboolean gst_qt_mux_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstFlowReturn gst_qt_mux_collected (GstCollectPads * pads,
gpointer user_data);
}
static gboolean
-gst_qt_mux_sink_event (GstPad * pad, GstEvent * event)
+gst_qt_mux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
gboolean ret;
GstQTMux *qtmux;
guint32 avg_bitrate = 0, max_bitrate = 0;
- qtmux = GST_QT_MUX_CAST (gst_pad_get_parent (pad));
+ qtmux = GST_QT_MUX_CAST (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS:
break;
}
- ret = qtmux->collect_event (pad, event);
- gst_object_unref (qtmux);
+ ret = qtmux->collect_event (pad, parent, event);
return ret;
}
static gboolean qtdemux_sink_activate_push (GstPad * sinkpad, gboolean active);
static void gst_qtdemux_loop (GstPad * pad);
-static GstFlowReturn gst_qtdemux_chain (GstPad * sinkpad, GstBuffer * inbuf);
-static gboolean gst_qtdemux_handle_sink_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_qtdemux_chain (GstPad * sinkpad, GstObject * parent,
+ GstBuffer * inbuf);
+static gboolean gst_qtdemux_handle_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static gboolean qtdemux_parse_moov (GstQTDemux * qtdemux,
const guint8 * buffer, guint length);
}
static gboolean
-gst_qtdemux_handle_src_event (GstPad * pad, GstEvent * event)
+gst_qtdemux_handle_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
gboolean res = TRUE;
- GstQTDemux *qtdemux = GST_QTDEMUX (gst_pad_get_parent (pad));
+ GstQTDemux *qtdemux = GST_QTDEMUX (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_SEEK:
gst_event_unref (event);
break;
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
- gst_object_unref (qtdemux);
-
done:
return res;
}
static gboolean
-gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstEvent * event)
+gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent,
+ GstEvent * event)
{
- GstQTDemux *demux = GST_QTDEMUX (GST_PAD_PARENT (sinkpad));
+ GstQTDemux *demux = GST_QTDEMUX (parent);
gboolean res;
GST_LOG_OBJECT (demux, "handling %s event", GST_EVENT_TYPE_NAME (event));
break;
}
- res = gst_pad_event_default (demux->sinkpad, event);
+ res = gst_pad_event_default (demux->sinkpad, parent, event);
drop:
return res;
/* FIXME, unverified after edit list updates */
static GstFlowReturn
-gst_qtdemux_chain (GstPad * sinkpad, GstBuffer * inbuf)
+gst_qtdemux_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * inbuf)
{
GstQTDemux *demux;
GstFlowReturn ret = GST_FLOW_OK;
- demux = GST_QTDEMUX (gst_pad_get_parent (sinkpad));
+ demux = GST_QTDEMUX (parent);
gst_adapter_push (demux->adapter, inbuf);
demux->neededbytes);
}
done:
- gst_object_unref (demux);
return ret;
static GstStateChangeReturn
gst_alaw_dec_change_state (GstElement * element, GstStateChange transition);
-static gboolean gst_alaw_dec_event (GstPad * pad, GstEvent * event);
-static GstFlowReturn gst_alaw_dec_chain (GstPad * pad, GstBuffer * buffer);
+static gboolean gst_alaw_dec_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static GstFlowReturn gst_alaw_dec_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
#define gst_alaw_dec_parent_class parent_class
G_DEFINE_TYPE (GstALawDec, gst_alaw_dec, GST_TYPE_ELEMENT);
}
static gboolean
-gst_alaw_dec_event (GstPad * pad, GstEvent * event)
+gst_alaw_dec_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstALawDec *alawdec;
gboolean res;
- alawdec = GST_ALAW_DEC (GST_PAD_PARENT (pad));
+ alawdec = GST_ALAW_DEC (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS:
break;
}
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
return res;
}
static GstFlowReturn
-gst_alaw_dec_chain (GstPad * pad, GstBuffer * buffer)
+gst_alaw_dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstALawDec *alawdec;
gint16 *linear_data;
gint i;
GstFlowReturn ret;
- alawdec = GST_ALAW_DEC (GST_PAD_PARENT (pad));
+ alawdec = GST_ALAW_DEC (parent);
if (G_UNLIKELY (alawdec->rate == 0))
goto not_negotiated;
extern GstStaticPadTemplate alaw_enc_src_factory;
extern GstStaticPadTemplate alaw_enc_sink_factory;
-static gboolean gst_alaw_enc_event (GstPad * pad, GstEvent * event);
-static GstFlowReturn gst_alaw_enc_chain (GstPad * pad, GstBuffer * buffer);
+static gboolean gst_alaw_enc_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static GstFlowReturn gst_alaw_enc_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
G_DEFINE_TYPE (GstALawEnc, gst_alaw_enc, GST_TYPE_ELEMENT);
}
static gboolean
-gst_alaw_enc_event (GstPad * pad, GstEvent * event)
+gst_alaw_enc_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstALawEnc *alawenc;
gboolean res;
- alawenc = GST_ALAW_ENC (GST_PAD_PARENT (pad));
+ alawenc = GST_ALAW_ENC (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS:
break;
}
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
return res;
}
static GstFlowReturn
-gst_alaw_enc_chain (GstPad * pad, GstBuffer * buffer)
+gst_alaw_enc_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstALawEnc *alawenc;
gint16 *linear_data;
GstFlowReturn ret;
GstClockTime timestamp, duration;
- alawenc = GST_ALAW_ENC (GST_PAD_PARENT (pad));
+ alawenc = GST_ALAW_ENC (parent);
if (G_UNLIKELY (alawenc->rate == 0 || alawenc->channels == 0))
goto not_negotiated;
static GstStateChangeReturn
gst_mulawdec_change_state (GstElement * element, GstStateChange transition);
-static gboolean gst_mulawdec_event (GstPad * pad, GstEvent * event);
-static GstFlowReturn gst_mulawdec_chain (GstPad * pad, GstBuffer * buffer);
+static gboolean gst_mulawdec_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static GstFlowReturn gst_mulawdec_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
#define gst_mulawdec_parent_class parent_class
G_DEFINE_TYPE (GstMuLawDec, gst_mulawdec, GST_TYPE_ELEMENT);
}
static gboolean
-gst_mulawdec_event (GstPad * pad, GstEvent * event)
+gst_mulawdec_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstMuLawDec *mulawdec;
gboolean res;
- mulawdec = GST_MULAWDEC (GST_PAD_PARENT (pad));
+ mulawdec = GST_MULAWDEC (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS:
break;
}
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
return res;
}
static GstFlowReturn
-gst_mulawdec_chain (GstPad * pad, GstBuffer * buffer)
+gst_mulawdec_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstMuLawDec *mulawdec;
gint16 *linear_data;
GstBuffer *outbuf;
GstFlowReturn ret;
- mulawdec = GST_MULAWDEC (GST_PAD_PARENT (pad));
+ mulawdec = GST_MULAWDEC (parent);
if (G_UNLIKELY (mulawdec->rate == 0))
goto not_negotiated;
ARG_0
};
-static gboolean gst_mulawenc_event (GstPad * pad, GstEvent * event);
-static GstFlowReturn gst_mulawenc_chain (GstPad * pad, GstBuffer * buffer);
+static gboolean gst_mulawenc_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static GstFlowReturn gst_mulawenc_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
#define gst_mulawenc_parent_class parent_class
G_DEFINE_TYPE (GstMuLawEnc, gst_mulawenc, GST_TYPE_ELEMENT);
}
static gboolean
-gst_mulawenc_event (GstPad * pad, GstEvent * event)
+gst_mulawenc_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstMuLawEnc *mulawenc;
gboolean res;
- mulawenc = GST_MULAWENC (GST_PAD_PARENT (pad));
+ mulawenc = GST_MULAWENC (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS:
break;
}
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
return res;
}
static GstFlowReturn
-gst_mulawenc_chain (GstPad * pad, GstBuffer * buffer)
+gst_mulawenc_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstMuLawEnc *mulawenc;
gint16 *linear_data;
GstFlowReturn ret;
GstClockTime timestamp, duration;
- mulawenc = GST_MULAWENC (gst_pad_get_parent (pad));
+ mulawenc = GST_MULAWENC (parent);
if (!mulawenc->rate || !mulawenc->channels)
goto not_negotiated;
ret = gst_pad_push (mulawenc->srcpad, outbuf);
done:
- gst_object_unref (mulawenc);
return ret;
};
-static GstFlowReturn gst_multipart_demux_chain (GstPad * pad, GstBuffer * buf);
+static GstFlowReturn gst_multipart_demux_chain (GstPad * pad,
+ GstObject * parent, GstBuffer * buf);
static GstStateChangeReturn gst_multipart_demux_change_state (GstElement *
element, GstStateChange transition);
}
static GstFlowReturn
-gst_multipart_demux_chain (GstPad * pad, GstBuffer * buf)
+gst_multipart_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
GstMultipartDemux *multipart;
GstAdapter *adapter;
gint size = 1;
GstFlowReturn res;
- multipart = GST_MULTIPART_DEMUX (gst_pad_get_parent (pad));
+ multipart = GST_MULTIPART_DEMUX (parent);
adapter = multipart->adapter;
res = GST_FLOW_OK;
}
nodata:
- gst_object_unref (multipart);
-
if (G_UNLIKELY (size == MULTIPART_DATA_ERROR))
return GST_FLOW_ERROR;
if (G_UNLIKELY (size == MULTIPART_DATA_EOS))
static void gst_multipart_mux_finalize (GObject * object);
static gboolean gst_multipart_mux_handle_src_event (GstPad * pad,
- GstEvent * event);
+ GstObject * parent, GstEvent * event);
static GstPad *gst_multipart_mux_request_new_pad (GstElement * element,
GstPadTemplate * templ, const gchar * name, const GstCaps * caps);
static GstStateChangeReturn gst_multipart_mux_change_state (GstElement *
/* handle events */
static gboolean
-gst_multipart_mux_handle_src_event (GstPad * pad, GstEvent * event)
+gst_multipart_mux_handle_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
- GstMultipartMux *multipart_mux;
GstEventType type;
- multipart_mux = GST_MULTIPART_MUX (gst_pad_get_parent (pad));
-
type = event ? GST_EVENT_TYPE (event) : GST_EVENT_UNKNOWN;
switch (type) {
break;
}
- gst_object_unref (multipart_mux);
-
- return gst_pad_event_default (pad, event);
+ return gst_pad_event_default (pad, parent, event);
}
static const gchar *
static GstStateChangeReturn gst_rg_volume_change_state (GstElement * element,
GstStateChange transition);
-static gboolean gst_rg_volume_sink_event (GstPad * pad, GstEvent * event);
+static gboolean gst_rg_volume_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstEvent *gst_rg_volume_tag_event (GstRgVolume * self, GstEvent * event);
static void gst_rg_volume_reset (GstRgVolume * self);
/* Event function for the ghost sink pad. */
static gboolean
-gst_rg_volume_sink_event (GstPad * pad, GstEvent * event)
+gst_rg_volume_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstRgVolume *self;
GstPad *volume_sink_pad;
GstEvent *send_event = event;
gboolean res;
- self = GST_RG_VOLUME (gst_pad_get_parent_element (pad));
+ self = GST_RG_VOLUME (parent);
volume_sink_pad = gst_ghost_pad_get_target (GST_GHOST_PAD (pad));
switch (GST_EVENT_TYPE (event)) {
res = TRUE;
gst_object_unref (volume_sink_pad);
- gst_object_unref (self);
+
return res;
}
static void gst_asteriskh263_finalize (GObject * object);
-static GstFlowReturn gst_asteriskh263_chain (GstPad * pad, GstBuffer * buffer);
+static GstFlowReturn gst_asteriskh263_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
static GstStateChangeReturn gst_asteriskh263_change_state (GstElement *
element, GstStateChange transition);
}
static GstFlowReturn
-gst_asteriskh263_chain (GstPad * pad, GstBuffer * buf)
+gst_asteriskh263_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
GstAsteriskh263 *asteriskh263;
GstBuffer *outbuf;
GstFlowReturn ret;
- asteriskh263 = GST_ASTERISK_H263 (GST_OBJECT_PARENT (pad));
+ asteriskh263 = GST_ASTERISK_H263 (parent);
if (!gst_rtp_buffer_validate (buf))
goto bad_packet;
/* sinkpad overrides */
static gboolean gst_rtp_jitter_buffer_sink_event (GstPad * pad,
- GstEvent * event);
+ GstObject * parent, GstEvent * event);
static GstFlowReturn gst_rtp_jitter_buffer_chain (GstPad * pad,
- GstBuffer * buffer);
+ GstObject * parent, GstBuffer * buffer);
static gboolean gst_rtp_jitter_buffer_sink_rtcp_event (GstPad * pad,
- GstEvent * event);
+ GstObject * parent, GstEvent * event);
static GstFlowReturn gst_rtp_jitter_buffer_chain_rtcp (GstPad * pad,
- GstBuffer * buffer);
+ GstObject * parent, GstBuffer * buffer);
static gboolean gst_rtp_jitter_buffer_sink_query (GstPad * pad,
GstObject * parent, GstQuery * query);
/* srcpad overrides */
static gboolean gst_rtp_jitter_buffer_src_event (GstPad * pad,
- GstEvent * event);
-static gboolean
-gst_rtp_jitter_buffer_src_activate_push (GstPad * pad, gboolean active);
+ GstObject * parent, GstEvent * event);
+static gboolean gst_rtp_jitter_buffer_src_activate_push (GstPad * pad,
+ gboolean active);
static void gst_rtp_jitter_buffer_loop (GstRtpJitterBuffer * jitterbuffer);
static gboolean gst_rtp_jitter_buffer_src_query (GstPad * pad,
GstObject * parent, GstQuery * query);
}
static gboolean
-gst_rtp_jitter_buffer_src_event (GstPad * pad, GstEvent * event)
+gst_rtp_jitter_buffer_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
gboolean ret = TRUE;
GstRtpJitterBuffer *jitterbuffer;
GstRtpJitterBufferPrivate *priv;
- jitterbuffer = GST_RTP_JITTER_BUFFER (gst_pad_get_parent (pad));
- if (G_UNLIKELY (jitterbuffer == NULL)) {
- gst_event_unref (event);
- return FALSE;
- }
+ jitterbuffer = GST_RTP_JITTER_BUFFER (parent);
priv = jitterbuffer->priv;
GST_DEBUG_OBJECT (jitterbuffer, "received %s", GST_EVENT_TYPE_NAME (event));
ret = gst_pad_push_event (priv->sinkpad, event);
break;
}
- gst_object_unref (jitterbuffer);
return ret;
}
static gboolean
-gst_rtp_jitter_buffer_sink_event (GstPad * pad, GstEvent * event)
+gst_rtp_jitter_buffer_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
gboolean ret = TRUE;
GstRtpJitterBuffer *jitterbuffer;
GstRtpJitterBufferPrivate *priv;
- jitterbuffer = GST_RTP_JITTER_BUFFER (gst_pad_get_parent (pad));
- if (G_UNLIKELY (jitterbuffer == NULL)) {
- gst_event_unref (event);
- return FALSE;
- }
+ jitterbuffer = GST_RTP_JITTER_BUFFER (parent);
priv = jitterbuffer->priv;
GST_DEBUG_OBJECT (jitterbuffer, "received %s", GST_EVENT_TYPE_NAME (event));
}
done:
- gst_object_unref (jitterbuffer);
return ret;
}
static gboolean
-gst_rtp_jitter_buffer_sink_rtcp_event (GstPad * pad, GstEvent * event)
+gst_rtp_jitter_buffer_sink_rtcp_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstRtpJitterBuffer *jitterbuffer;
- jitterbuffer = GST_RTP_JITTER_BUFFER (gst_pad_get_parent (pad));
+ jitterbuffer = GST_RTP_JITTER_BUFFER (parent);
GST_DEBUG_OBJECT (jitterbuffer, "received %s", GST_EVENT_TYPE_NAME (event));
break;
}
gst_event_unref (event);
- gst_object_unref (jitterbuffer);
return TRUE;
}
}
static GstFlowReturn
-gst_rtp_jitter_buffer_chain (GstPad * pad, GstBuffer * buffer)
+gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer)
{
GstRtpJitterBuffer *jitterbuffer;
GstRtpJitterBufferPrivate *priv;
guint8 pt;
GstRTPBuffer rtp = { NULL };
- jitterbuffer = GST_RTP_JITTER_BUFFER (gst_pad_get_parent (pad));
+ jitterbuffer = GST_RTP_JITTER_BUFFER (parent);
if (G_UNLIKELY (!gst_rtp_buffer_validate (buffer)))
goto invalid_buffer;
if (percent != -1)
post_buffering_percent (jitterbuffer, percent);
- gst_object_unref (jitterbuffer);
-
return ret;
/* ERRORS */
GST_ELEMENT_WARNING (jitterbuffer, STREAM, DECODE, (NULL),
("Received invalid RTP payload, dropping"));
gst_buffer_unref (buffer);
- gst_object_unref (jitterbuffer);
return GST_FLOW_OK;
}
no_clock_rate:
}
static GstFlowReturn
-gst_rtp_jitter_buffer_chain_rtcp (GstPad * pad, GstBuffer * buffer)
+gst_rtp_jitter_buffer_chain_rtcp (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer)
{
GstRtpJitterBuffer *jitterbuffer;
GstRtpJitterBufferPrivate *priv;
GstRTCPBuffer rtcp = { NULL };
guint64 clock_base;
- jitterbuffer = GST_RTP_JITTER_BUFFER (gst_pad_get_parent (pad));
+ jitterbuffer = GST_RTP_JITTER_BUFFER (parent);
if (G_UNLIKELY (!gst_rtcp_buffer_validate (buffer)))
goto invalid_buffer;
done:
gst_buffer_unref (buffer);
- gst_object_unref (jitterbuffer);
return ret;
static void gst_rtp_pt_demux_release (GstRtpPtDemux * ptdemux);
static gboolean gst_rtp_pt_demux_setup (GstRtpPtDemux * ptdemux);
-static gboolean gst_rtp_pt_demux_sink_event (GstPad * pad, GstEvent * event);
-static GstFlowReturn gst_rtp_pt_demux_chain (GstPad * pad, GstBuffer * buf);
+static gboolean gst_rtp_pt_demux_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static GstFlowReturn gst_rtp_pt_demux_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf);
static GstStateChangeReturn gst_rtp_pt_demux_change_state (GstElement * element,
GstStateChange transition);
static void gst_rtp_pt_demux_clear_pt_map (GstRtpPtDemux * rtpdemux);
static GstRtpPtDemuxPad *find_pad_for_pt (GstRtpPtDemux * rtpdemux, guint8 pt);
-static gboolean gst_rtp_pt_demux_src_event (GstPad * pad, GstEvent * event);
+static gboolean gst_rtp_pt_demux_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static guint gst_rtp_pt_demux_signals[LAST_SIGNAL] = { 0 };
}
static GstFlowReturn
-gst_rtp_pt_demux_chain (GstPad * pad, GstBuffer * buf)
+gst_rtp_pt_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
GstFlowReturn ret = GST_FLOW_OK;
GstRtpPtDemux *rtpdemux;
- GstElement *element = GST_ELEMENT (GST_OBJECT_PARENT (pad));
guint8 pt;
GstPad *srcpad;
GstRtpPtDemuxPad *rtpdemuxpad;
GstCaps *caps;
GstRTPBuffer rtp;
- rtpdemux = GST_RTP_PT_DEMUX (GST_OBJECT_PARENT (pad));
+ rtpdemux = GST_RTP_PT_DEMUX (parent);
if (!gst_rtp_buffer_validate (buf))
goto invalid_buffer;
GST_OBJECT_UNLOCK (rtpdemux);
gst_pad_set_active (srcpad, TRUE);
- gst_element_add_pad (element, srcpad);
+ gst_element_add_pad (GST_ELEMENT_CAST (rtpdemux), srcpad);
GST_DEBUG ("emitting new-payload-type for pt %d", pt);
g_signal_emit (G_OBJECT (rtpdemux),
}
static gboolean
-gst_rtp_pt_demux_sink_event (GstPad * pad, GstEvent * event)
+gst_rtp_pt_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstRtpPtDemux *rtpdemux;
gboolean res = FALSE;
- rtpdemux = GST_RTP_PT_DEMUX (gst_pad_get_parent (pad));
- if (G_UNLIKELY (rtpdemux == NULL)) {
- gst_event_unref (event);
- return FALSE;
- }
+ rtpdemux = GST_RTP_PT_DEMUX (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CUSTOM_DOWNSTREAM:
gst_event_unref (event);
} else {
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
}
break;
}
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
- gst_object_unref (rtpdemux);
return res;
}
static gboolean
-gst_rtp_pt_demux_src_event (GstPad * pad, GstEvent * event)
+gst_rtp_pt_demux_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstRtpPtDemux *demux;
const GstStructure *s;
- demux = GST_RTP_PT_DEMUX (gst_pad_get_parent (pad));
+ demux = GST_RTP_PT_DEMUX (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CUSTOM_UPSTREAM:
break;
}
- gst_object_unref (demux);
-
- return gst_pad_event_default (pad, event);
+ return gst_pad_event_default (pad, parent, event);
}
-
-
/*
* Reserves resources for the object.
*/
}
static gboolean
-gst_rtp_session_event_recv_rtp_sink (GstPad * pad, GstEvent * event)
+gst_rtp_session_event_recv_rtp_sink (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstRtpSession *rtpsession;
gboolean ret = FALSE;
- rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad));
- if (G_UNLIKELY (rtpsession == NULL)) {
- gst_event_unref (event);
- return FALSE;
- }
+ rtpsession = GST_RTP_SESSION (parent);
GST_DEBUG_OBJECT (rtpsession, "received event %s",
GST_EVENT_TYPE_NAME (event));
ret = gst_pad_push_event (rtpsession->recv_rtp_src, event);
break;
}
- gst_object_unref (rtpsession);
return ret;
}
static gboolean
-gst_rtp_session_event_recv_rtp_src (GstPad * pad, GstEvent * event)
+gst_rtp_session_event_recv_rtp_src (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstRtpSession *rtpsession;
gboolean forward = TRUE;
guint32 ssrc;
guint pt;
- rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad));
- if (G_UNLIKELY (rtpsession == NULL)) {
- gst_event_unref (event);
- return FALSE;
- }
+ rtpsession = GST_RTP_SESSION (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CUSTOM_UPSTREAM:
if (forward)
ret = gst_pad_push_event (rtpsession->recv_rtp_sink, event);
- gst_object_unref (rtpsession);
-
return ret;
}
* forward the packet on the rtp_src pad
*/
static GstFlowReturn
-gst_rtp_session_chain_recv_rtp (GstPad * pad, GstBuffer * buffer)
+gst_rtp_session_chain_recv_rtp (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer)
{
GstRtpSession *rtpsession;
GstRtpSessionPrivate *priv;
GstClockTime current_time, running_time;
GstClockTime timestamp;
- rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad));
+ rtpsession = GST_RTP_SESSION (parent);
priv = rtpsession->priv;
GST_LOG_OBJECT (rtpsession, "received RTP packet");
goto push_error;
done:
- gst_object_unref (rtpsession);
return ret;
}
static gboolean
-gst_rtp_session_event_recv_rtcp_sink (GstPad * pad, GstEvent * event)
+gst_rtp_session_event_recv_rtcp_sink (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstRtpSession *rtpsession;
gboolean ret = FALSE;
- rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad));
+ rtpsession = GST_RTP_SESSION (parent);
GST_DEBUG_OBJECT (rtpsession, "received event %s",
GST_EVENT_TYPE_NAME (event));
ret = gst_pad_push_event (rtpsession->sync_src, event);
break;
}
- gst_object_unref (rtpsession);
return ret;
}
* forward the SR packets to the sync_src pad.
*/
static GstFlowReturn
-gst_rtp_session_chain_recv_rtcp (GstPad * pad, GstBuffer * buffer)
+gst_rtp_session_chain_recv_rtcp (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer)
{
GstRtpSession *rtpsession;
GstRtpSessionPrivate *priv;
GstClockTime current_time;
guint64 ntpnstime;
- rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad));
+ rtpsession = GST_RTP_SESSION (parent);
priv = rtpsession->priv;
GST_LOG_OBJECT (rtpsession, "received RTCP packet");
rtp_session_process_rtcp (priv->session, buffer, current_time, ntpnstime);
- gst_object_unref (rtpsession);
-
return GST_FLOW_OK; /* always return OK */
}
}
static gboolean
-gst_rtp_session_event_send_rtcp_src (GstPad * pad, GstEvent * event)
+gst_rtp_session_event_send_rtcp_src (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstRtpSession *rtpsession;
gboolean ret = TRUE;
- rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad));
- if (G_UNLIKELY (rtpsession == NULL)) {
- gst_event_unref (event);
- return FALSE;
- }
+ rtpsession = GST_RTP_SESSION (parent);
GST_DEBUG_OBJECT (rtpsession, "received EVENT");
switch (GST_EVENT_TYPE (event)) {
break;
}
- gst_object_unref (rtpsession);
return ret;
}
static gboolean
-gst_rtp_session_event_send_rtp_sink (GstPad * pad, GstEvent * event)
+gst_rtp_session_event_send_rtp_sink (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstRtpSession *rtpsession;
gboolean ret = FALSE;
- rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad));
+ rtpsession = GST_RTP_SESSION (parent);
GST_DEBUG_OBJECT (rtpsession, "received event");
break;
}
}
- gst_object_unref (rtpsession);
return ret;
}
* send to RTP session manager and forward to send_rtp_src.
*/
static GstFlowReturn
-gst_rtp_session_chain_send_rtp_common (GstPad * pad, gpointer data,
- gboolean is_list)
+gst_rtp_session_chain_send_rtp_common (GstRtpSession * rtpsession,
+ gpointer data, gboolean is_list)
{
- GstRtpSession *rtpsession;
GstRtpSessionPrivate *priv;
GstFlowReturn ret;
GstClockTime timestamp, running_time;
GstClockTime current_time;
- rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad));
priv = rtpsession->priv;
GST_LOG_OBJECT (rtpsession, "received RTP %s", is_list ? "list" : "packet");
goto push_error;
done:
- gst_object_unref (rtpsession);
return ret;
}
static GstFlowReturn
-gst_rtp_session_chain_send_rtp (GstPad * pad, GstBuffer * buffer)
+gst_rtp_session_chain_send_rtp (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer)
{
- return gst_rtp_session_chain_send_rtp_common (pad, buffer, FALSE);
+ GstRtpSession *rtpsession = GST_RTP_SESSION (parent);
+
+ return gst_rtp_session_chain_send_rtp_common (rtpsession, buffer, FALSE);
}
static GstFlowReturn
-gst_rtp_session_chain_send_rtp_list (GstPad * pad, GstBufferList * list)
+gst_rtp_session_chain_send_rtp_list (GstPad * pad, GstObject * parent,
+ GstBufferList * list)
{
- return gst_rtp_session_chain_send_rtp_common (pad, list, TRUE);
+ GstRtpSession *rtpsession = GST_RTP_SESSION (parent);
+
+ return gst_rtp_session_chain_send_rtp_common (rtpsession, list, TRUE);
}
/* Create sinkpad to receive RTP packets from senders. This will also create a
guint32 ssrc);
/* sinkpad stuff */
-static GstFlowReturn gst_rtp_ssrc_demux_chain (GstPad * pad, GstBuffer * buf);
-static gboolean gst_rtp_ssrc_demux_sink_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_rtp_ssrc_demux_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf);
+static gboolean gst_rtp_ssrc_demux_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstFlowReturn gst_rtp_ssrc_demux_rtcp_chain (GstPad * pad,
- GstBuffer * buf);
+ GstObject * parent, GstBuffer * buf);
static gboolean gst_rtp_ssrc_demux_rtcp_sink_event (GstPad * pad,
- GstEvent * event);
+ GstObject * parent, GstEvent * event);
static GstIterator *gst_rtp_ssrc_demux_iterate_internal_links_sink (GstPad *
pad, GstObject * parent);
/* srcpad stuff */
-static gboolean gst_rtp_ssrc_demux_src_event (GstPad * pad, GstEvent * event);
-static GstIterator *gst_rtp_ssrc_demux_iterate_internal_links_src (GstPad *
- pad, GstObject * parent);
+static gboolean gst_rtp_ssrc_demux_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static GstIterator *gst_rtp_ssrc_demux_iterate_internal_links_src (GstPad * pad,
+ GstObject * parent);
static gboolean gst_rtp_ssrc_demux_src_query (GstPad * pad, GstObject * parent,
GstQuery * query);
}
static gboolean
-gst_rtp_ssrc_demux_sink_event (GstPad * pad, GstEvent * event)
+gst_rtp_ssrc_demux_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstRtpSsrcDemux *demux;
gboolean res = FALSE;
- demux = GST_RTP_SSRC_DEMUX (gst_pad_get_parent (pad));
- if (G_UNLIKELY (demux == NULL)) {
- gst_event_unref (event);
- return FALSE;
- }
+ demux = GST_RTP_SSRC_DEMUX (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_FLUSH_STOP:
}
}
- gst_object_unref (demux);
return res;
}
static gboolean
-gst_rtp_ssrc_demux_rtcp_sink_event (GstPad * pad, GstEvent * event)
+gst_rtp_ssrc_demux_rtcp_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstRtpSsrcDemux *demux;
gboolean res = FALSE;
- demux = GST_RTP_SSRC_DEMUX (gst_pad_get_parent (pad));
+ demux = GST_RTP_SSRC_DEMUX (parent);
switch (GST_EVENT_TYPE (event)) {
default:
break;
}
}
- gst_object_unref (demux);
return res;
}
static GstFlowReturn
-gst_rtp_ssrc_demux_chain (GstPad * pad, GstBuffer * buf)
+gst_rtp_ssrc_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
GstFlowReturn ret;
GstRtpSsrcDemux *demux;
GstRTPBuffer rtp;
GstPad *srcpad;
- demux = GST_RTP_SSRC_DEMUX (GST_OBJECT_PARENT (pad));
+ demux = GST_RTP_SSRC_DEMUX (parent);
if (!gst_rtp_buffer_validate (buf))
goto invalid_payload;
}
static GstFlowReturn
-gst_rtp_ssrc_demux_rtcp_chain (GstPad * pad, GstBuffer * buf)
+gst_rtp_ssrc_demux_rtcp_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf)
{
GstFlowReturn ret;
GstRtpSsrcDemux *demux;
GstRTCPBuffer rtcp;
GstPad *srcpad;
- demux = GST_RTP_SSRC_DEMUX (GST_OBJECT_PARENT (pad));
+ demux = GST_RTP_SSRC_DEMUX (parent);
if (!gst_rtcp_buffer_validate (buf))
goto invalid_rtcp;
}
static gboolean
-gst_rtp_ssrc_demux_src_event (GstPad * pad, GstEvent * event)
+gst_rtp_ssrc_demux_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstRtpSsrcDemux *demux;
const GstStructure *s;
- demux = GST_RTP_SSRC_DEMUX (gst_pad_get_parent (pad));
+ demux = GST_RTP_SSRC_DEMUX (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CUSTOM_UPSTREAM:
break;
}
- gst_object_unref (demux);
-
- return gst_pad_event_default (pad, event);
+ return gst_pad_event_default (pad, parent, event);
}
static GstIterator *
GstPadTemplate * templ, const gchar * name, const GstCaps * caps);
static void gst_rtp_dec_release_pad (GstElement * element, GstPad * pad);
-static GstFlowReturn gst_rtp_dec_chain_rtp (GstPad * pad, GstBuffer * buffer);
-static GstFlowReturn gst_rtp_dec_chain_rtcp (GstPad * pad, GstBuffer * buffer);
+static GstFlowReturn gst_rtp_dec_chain_rtp (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
+static GstFlowReturn gst_rtp_dec_chain_rtcp (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
/* Manages the receiving end of the packets.
}
static GstFlowReturn
-gst_rtp_dec_chain_rtp (GstPad * pad, GstBuffer * buffer)
+gst_rtp_dec_chain_rtp (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstFlowReturn res;
GstRTPDec *rtpdec;
guint8 pt;
GstRTPBuffer rtp = { NULL, };
- rtpdec = GST_RTP_DEC (GST_PAD_PARENT (pad));
+ rtpdec = GST_RTP_DEC (parent);
GST_DEBUG_OBJECT (rtpdec, "got rtp packet");
}
static GstFlowReturn
-gst_rtp_dec_chain_rtcp (GstPad * pad, GstBuffer * buffer)
+gst_rtp_dec_chain_rtcp (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstRTPDec *src;
gboolean more;
#endif
- src = GST_RTP_DEC (GST_PAD_PARENT (pad));
+ src = GST_RTP_DEC (parent);
GST_DEBUG_OBJECT (src, "got rtcp packet");
}
static gboolean
-gst_rtspsrc_handle_src_event (GstPad * pad, GstEvent * event)
+gst_rtspsrc_handle_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstRTSPSrc *src;
gboolean res = TRUE;
gboolean forward;
- src = GST_RTSPSRC_CAST (gst_pad_get_parent (pad));
+ src = GST_RTSPSRC_CAST (parent);
GST_DEBUG_OBJECT (src, "pad %s:%s received event %s",
GST_DEBUG_PAD_NAME (pad), GST_EVENT_TYPE_NAME (event));
} else {
gst_event_unref (event);
}
- gst_object_unref (src);
return res;
}
/* this is the final event function we receive on the internal source pad when
* we deal with TCP connections */
static gboolean
-gst_rtspsrc_handle_internal_src_event (GstPad * pad, GstEvent * event)
+gst_rtspsrc_handle_internal_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
GstRTSPSrc *src;
gboolean res;
/* callback for RTCP messages to be sent to the server when operating in TCP
* mode. */
static GstFlowReturn
-gst_rtspsrc_sink_chain (GstPad * pad, GstBuffer * buffer)
+gst_rtspsrc_sink_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
GstRTSPSrc *src;
GstRTSPStream *stream;
GstStateChange transition);
static GstFlowReturn gst_shape_wipe_video_sink_chain (GstPad * pad,
- GstBuffer * buffer);
+ GstObject * parent, GstBuffer * buffer);
static gboolean gst_shape_wipe_video_sink_event (GstPad * pad,
- GstEvent * event);
+ GstObject * parent, GstEvent * event);
static gboolean gst_shape_wipe_video_sink_setcaps (GstShapeWipe * self,
GstCaps * caps);
static GstCaps *gst_shape_wipe_video_sink_getcaps (GstPad * pad,
static gboolean gst_shape_wipe_video_sink_query (GstPad * pad,
GstObject * parent, GstQuery * query);
static GstFlowReturn gst_shape_wipe_mask_sink_chain (GstPad * pad,
- GstBuffer * buffer);
-static gboolean gst_shape_wipe_mask_sink_event (GstPad * pad, GstEvent * event);
+ GstObject * parent, GstBuffer * buffer);
+static gboolean gst_shape_wipe_mask_sink_event (GstPad * pad,
+ GstObject * parent, GstEvent * event);
static gboolean gst_shape_wipe_mask_sink_setcaps (GstShapeWipe * self,
GstCaps * caps);
static GstCaps *gst_shape_wipe_mask_sink_getcaps (GstPad * pad,
GstCaps * filter);
static gboolean gst_shape_wipe_mask_sink_query (GstPad * pad,
GstObject * parent, GstQuery * query);
-static gboolean gst_shape_wipe_src_event (GstPad * pad, GstEvent * event);
+static gboolean gst_shape_wipe_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstCaps *gst_shape_wipe_src_getcaps (GstPad * pad, GstCaps * filter);
static gboolean gst_shape_wipe_src_query (GstPad * pad, GstObject * parent,
GstQuery * query);
CREATE_ARGB_FUNCTIONS (8, bgra, 8, 3, 2, 1, 0);
static GstFlowReturn
-gst_shape_wipe_video_sink_chain (GstPad * pad, GstBuffer * buffer)
+gst_shape_wipe_video_sink_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer)
{
- GstShapeWipe *self = GST_SHAPE_WIPE (GST_PAD_PARENT (pad));
+ GstShapeWipe *self = GST_SHAPE_WIPE (parent);
GstFlowReturn ret = GST_FLOW_OK;
GstBuffer *mask = NULL, *outbuf = NULL;
GstClockTime timestamp;
}
static GstFlowReturn
-gst_shape_wipe_mask_sink_chain (GstPad * pad, GstBuffer * buffer)
+gst_shape_wipe_mask_sink_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer)
{
- GstShapeWipe *self = GST_SHAPE_WIPE (GST_PAD_PARENT (pad));
+ GstShapeWipe *self = GST_SHAPE_WIPE (parent);
GstFlowReturn ret = GST_FLOW_OK;
g_mutex_lock (self->mask_mutex);
}
static gboolean
-gst_shape_wipe_video_sink_event (GstPad * pad, GstEvent * event)
+gst_shape_wipe_video_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
- GstShapeWipe *self = GST_SHAPE_WIPE (gst_pad_get_parent (pad));
+ GstShapeWipe *self = GST_SHAPE_WIPE (parent);
gboolean ret;
GST_LOG_OBJECT (pad, "Got %s event", GST_EVENT_TYPE_NAME (event));
break;
}
- gst_object_unref (self);
return ret;
}
static gboolean
-gst_shape_wipe_mask_sink_event (GstPad * pad, GstEvent * event)
+gst_shape_wipe_mask_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
- GstShapeWipe *self = GST_SHAPE_WIPE (gst_pad_get_parent (pad));
+ GstShapeWipe *self = GST_SHAPE_WIPE (parent);
GST_LOG_OBJECT (pad, "Got %s event", GST_EVENT_TYPE_NAME (event));
/* Dropping all events here */
gst_event_unref (event);
- gst_object_unref (self);
return TRUE;
}
static gboolean
-gst_shape_wipe_src_event (GstPad * pad, GstEvent * event)
+gst_shape_wipe_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
- GstShapeWipe *self = GST_SHAPE_WIPE (gst_pad_get_parent (pad));
+ GstShapeWipe *self = GST_SHAPE_WIPE (parent);
gboolean ret;
GST_LOG_OBJECT (pad, "Got %s event", GST_EVENT_TYPE_NAME (event));
break;
}
- gst_object_unref (self);
return ret;
}
GstObject * parent, GstQuery * query);
static gboolean gst_aspect_ratio_crop_set_caps (GstAspectRatioCrop *
aspect_ratio_crop, GstCaps * caps);
-static gboolean gst_aspect_ratio_crop_sink_event (GstPad * pad, GstEvent * evt);
+static gboolean gst_aspect_ratio_crop_sink_event (GstPad * pad,
+ GstObject * parent, GstEvent * evt);
static void gst_aspect_ratio_crop_finalize (GObject * object);
static void gst_aspect_ratio_transform_structure (GstAspectRatioCrop *
aspect_ratio_crop, GstStructure * structure, GstStructure ** new_structure,
}
static gboolean
-gst_aspect_ratio_crop_sink_event (GstPad * pad, GstEvent * evt)
+gst_aspect_ratio_crop_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * evt)
{
gboolean ret;
- GstAspectRatioCrop *aspect_ratio_crop =
- GST_ASPECT_RATIO_CROP (gst_pad_get_parent (pad));
+ GstAspectRatioCrop *aspect_ratio_crop = GST_ASPECT_RATIO_CROP (parent);
- ret = aspect_ratio_crop->sinkpad_old_eventfunc (pad, gst_event_ref (evt));
+ ret =
+ aspect_ratio_crop->sinkpad_old_eventfunc (pad, parent,
+ gst_event_ref (evt));
switch (GST_EVENT_TYPE (evt)) {
case GST_EVENT_CAPS:
default:
break;
}
-
- gst_object_unref (aspect_ratio_crop);
gst_event_unref (evt);
+
return ret;
}
#define gst_wavenc_parent_class parent_class
G_DEFINE_TYPE (GstWavEnc, gst_wavenc, GST_TYPE_ELEMENT);
-static GstFlowReturn gst_wavenc_chain (GstPad * pad, GstBuffer * buf);
-static gboolean gst_wavenc_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_wavenc_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf);
+static gboolean gst_wavenc_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstStateChangeReturn gst_wavenc_change_state (GstElement * element,
GstStateChange transition);
static gboolean gst_wavenc_sink_setcaps (GstPad * pad, GstCaps * caps);
#endif
static gboolean
-gst_wavenc_event (GstPad * pad, GstEvent * event)
+gst_wavenc_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
gboolean res = TRUE;
GstWavEnc *wavenc;
- wavenc = GST_WAVENC (gst_pad_get_parent (pad));
+ wavenc = GST_WAVENC (parent);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS:
wavenc->finished_properly = TRUE;
/* and forward the EOS event */
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
case GST_EVENT_SEGMENT:
gst_event_unref (event);
break;
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
- gst_object_unref (wavenc);
return res;
}
static GstFlowReturn
-gst_wavenc_chain (GstPad * pad, GstBuffer * buf)
+gst_wavenc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
- GstWavEnc *wavenc = GST_WAVENC (GST_PAD_PARENT (pad));
+ GstWavEnc *wavenc = GST_WAVENC (parent);
GstFlowReturn flow = GST_FLOW_OK;
g_return_val_if_fail (wavenc->channels > 0, GST_FLOW_WRONG_STATE);
static gboolean gst_wavparse_pad_convert (GstPad * pad, GstFormat src_format,
gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
-static GstFlowReturn gst_wavparse_chain (GstPad * pad, GstBuffer * buf);
-static gboolean gst_wavparse_sink_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_wavparse_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf);
+static gboolean gst_wavparse_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static void gst_wavparse_loop (GstPad * pad);
-static gboolean gst_wavparse_srcpad_event (GstPad * pad, GstEvent * event);
+static gboolean gst_wavparse_srcpad_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
static GstStaticPadTemplate sink_template_factory =
GST_STATIC_PAD_TEMPLATE ("sink",
}
static GstFlowReturn
-gst_wavparse_chain (GstPad * pad, GstBuffer * buf)
+gst_wavparse_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
GstFlowReturn ret;
- GstWavParse *wav = GST_WAVPARSE (GST_PAD_PARENT (pad));
+ GstWavParse *wav = GST_WAVPARSE (parent);
GST_LOG_OBJECT (wav, "adapter_push %u bytes", gst_buffer_get_size (buf));
}
static gboolean
-gst_wavparse_sink_event (GstPad * pad, GstEvent * event)
+gst_wavparse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
- GstWavParse *wav = GST_WAVPARSE (GST_PAD_PARENT (pad));
+ GstWavParse *wav = GST_WAVPARSE (parent);
gboolean ret = TRUE;
GST_LOG_OBJECT (wav, "handling %s event", GST_EVENT_TYPE_NAME (event));
/* fall-through */
}
default:
- ret = gst_pad_event_default (wav->sinkpad, event);
+ ret = gst_pad_event_default (wav->sinkpad, parent, event);
break;
}
}
static gboolean
-gst_wavparse_srcpad_event (GstPad * pad, GstEvent * event)
+gst_wavparse_srcpad_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
- GstWavParse *wavparse = GST_WAVPARSE (gst_pad_get_parent (pad));
+ GstWavParse *wavparse = GST_WAVPARSE (parent);
gboolean res = FALSE;
GST_DEBUG_OBJECT (wavparse, "%s event", GST_EVENT_TYPE_NAME (event));
res = gst_pad_push_event (wavparse->sinkpad, event);
break;
}
- gst_object_unref (wavparse);
return res;
}
static void gst_y4m_encode_reset (GstY4mEncode * filter);
-static gboolean gst_y4m_encode_sink_event (GstPad * pad, GstEvent * event);
-static GstFlowReturn gst_y4m_encode_chain (GstPad * pad, GstBuffer * buf);
+static gboolean gst_y4m_encode_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static GstFlowReturn gst_y4m_encode_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buf);
static GstStateChangeReturn gst_y4m_encode_change_state (GstElement * element,
GstStateChange transition);
}
static gboolean
-gst_y4m_encode_sink_event (GstPad * pad, GstEvent * event)
+gst_y4m_encode_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
gboolean res;
break;
}
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
return res;
}
static GstFlowReturn
-gst_y4m_encode_chain (GstPad * pad, GstBuffer * buf)
+gst_y4m_encode_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{
- GstY4mEncode *filter = GST_Y4M_ENCODE (GST_PAD_PARENT (pad));
+ GstY4mEncode *filter = GST_Y4M_ENCODE (parent);
GstBuffer *outbuf;
GstClockTime timestamp;