diff --git a/ext/assrender/gstassrender.c b/ext/assrender/gstassrender.c index e238eacb14..19016f5f62 100644 --- a/ext/assrender/gstassrender.c +++ b/ext/assrender/gstassrender.c @@ -97,12 +97,17 @@ static GstCaps *gst_ass_render_getcaps (GstPad * pad, GstCaps * filter); static gboolean gst_ass_render_setcaps_video (GstPad * pad, GstCaps * caps); static gboolean gst_ass_render_setcaps_text (GstPad * pad, GstCaps * caps); -static GstFlowReturn gst_ass_render_chain_video (GstPad * pad, GstBuffer * buf); -static GstFlowReturn gst_ass_render_chain_text (GstPad * pad, GstBuffer * buf); +static GstFlowReturn gst_ass_render_chain_video (GstPad * pad, + GstObject * parent, GstBuffer * buf); +static GstFlowReturn gst_ass_render_chain_text (GstPad * pad, + GstObject * parent, GstBuffer * buf); -static gboolean gst_ass_render_event_video (GstPad * pad, GstEvent * event); -static gboolean gst_ass_render_event_text (GstPad * pad, GstEvent * event); -static gboolean gst_ass_render_event_src (GstPad * pad, GstEvent * event); +static gboolean gst_ass_render_event_video (GstPad * pad, GstObject * parent, + GstEvent * event); +static gboolean gst_ass_render_event_text (GstPad * pad, GstObject * parent, + GstEvent * event); +static gboolean gst_ass_render_event_src (GstPad * pad, GstObject * parent, + GstEvent * event); static gboolean gst_ass_render_query_video (GstPad * pad, GstObject * parent, GstQuery * query); @@ -377,9 +382,9 @@ gst_ass_render_query_src (GstPad * pad, GstObject * parent, GstQuery * query) } static gboolean -gst_ass_render_event_src (GstPad * pad, GstEvent * event) +gst_ass_render_event_src (GstPad * pad, GstObject * parent, GstEvent * event) { - GstAssRender *render = GST_ASS_RENDER (gst_pad_get_parent (pad)); + GstAssRender *render = GST_ASS_RENDER (parent); gboolean ret = FALSE; switch (GST_EVENT_TYPE (event)) { @@ -420,8 +425,6 @@ gst_ass_render_event_src (GstPad * pad, GstEvent * event) break; } - gst_object_unref (render); - return ret; } @@ -903,9 +906,10 @@ gst_ass_render_process_text (GstAssRender * render, GstBuffer * buffer, } static GstFlowReturn -gst_ass_render_chain_video (GstPad * pad, GstBuffer * buffer) +gst_ass_render_chain_video (GstPad * pad, GstObject * parent, + GstBuffer * buffer) { - GstAssRender *render = GST_ASS_RENDER (GST_PAD_PARENT (pad)); + GstAssRender *render = GST_ASS_RENDER (parent); GstFlowReturn ret = GST_FLOW_OK; gboolean in_seg = FALSE; guint64 start, stop, clip_start = 0, clip_stop = 0; @@ -1044,10 +1048,10 @@ out_of_segment: } static GstFlowReturn -gst_ass_render_chain_text (GstPad * pad, GstBuffer * buffer) +gst_ass_render_chain_text (GstPad * pad, GstObject * parent, GstBuffer * buffer) { GstFlowReturn ret = GST_FLOW_OK; - GstAssRender *render = GST_ASS_RENDER (GST_PAD_PARENT (pad)); + GstAssRender *render = GST_ASS_RENDER (parent); GstClockTime timestamp, duration; GstClockTime sub_running_time, vid_running_time; GstClockTime sub_running_time_end; @@ -1220,10 +1224,10 @@ gst_ass_render_handle_tags (GstAssRender * render, GstTagList * taglist) } static gboolean -gst_ass_render_event_video (GstPad * pad, GstEvent * event) +gst_ass_render_event_video (GstPad * pad, GstObject * parent, GstEvent * event) { gboolean ret = FALSE; - GstAssRender *render = GST_ASS_RENDER (gst_pad_get_parent (pad)); + GstAssRender *render = GST_ASS_RENDER (parent); GST_DEBUG_OBJECT (pad, "received video event %s", GST_EVENT_TYPE_NAME (event)); @@ -1282,8 +1286,6 @@ gst_ass_render_event_video (GstPad * pad, GstEvent * event) break; } - gst_object_unref (render); - return ret; } @@ -1313,11 +1315,11 @@ gst_ass_render_query_video (GstPad * pad, GstObject * parent, GstQuery * query) } static gboolean -gst_ass_render_event_text (GstPad * pad, GstEvent * event) +gst_ass_render_event_text (GstPad * pad, GstObject * parent, GstEvent * event) { gint i; gboolean ret = FALSE; - GstAssRender *render = GST_ASS_RENDER (gst_pad_get_parent (pad)); + GstAssRender *render = GST_ASS_RENDER (parent); GST_DEBUG_OBJECT (pad, "received text event %s", GST_EVENT_TYPE_NAME (event)); @@ -1411,8 +1413,6 @@ gst_ass_render_event_text (GstPad * pad, GstEvent * event) break; } - gst_object_unref (render); - return ret; } diff --git a/gst-libs/gst/signalprocessor/gstsignalprocessor.c b/gst-libs/gst/signalprocessor/gstsignalprocessor.c index 3a089ed291..8de745de9a 100644 --- a/gst-libs/gst/signalprocessor/gstsignalprocessor.c +++ b/gst-libs/gst/signalprocessor/gstsignalprocessor.c @@ -204,11 +204,12 @@ static gboolean gst_signal_processor_sink_activate_push (GstPad * pad, static GstStateChangeReturn gst_signal_processor_change_state (GstElement * element, GstStateChange transition); -static gboolean gst_signal_processor_event (GstPad * pad, GstEvent * event); +static gboolean gst_signal_processor_event (GstPad * pad, GstObject * parent, + GstEvent * event); static GstFlowReturn gst_signal_processor_getrange (GstPad * pad, - guint64 offset, guint length, GstBuffer ** buffer); + GstObject * parent, guint64 offset, guint length, GstBuffer ** buffer); static GstFlowReturn gst_signal_processor_chain (GstPad * pad, - GstBuffer * buffer); + GstObject * parent, GstBuffer * buffer); static gboolean gst_signal_processor_setcaps (GstPad * pad, GstCaps * caps); @@ -583,13 +584,13 @@ gst_signal_processor_interleave_group (GstSignalProcessorGroup * group, } static gboolean -gst_signal_processor_event (GstPad * pad, GstEvent * event) +gst_signal_processor_event (GstPad * pad, GstObject * parent, GstEvent * event) { GstSignalProcessor *self; GstSignalProcessorClass *bclass; gboolean ret; - self = GST_SIGNAL_PROCESSOR (gst_pad_get_parent (pad)); + self = GST_SIGNAL_PROCESSOR (parent); bclass = GST_SIGNAL_PROCESSOR_GET_CLASS (self); GST_DEBUG_OBJECT (pad, "got event %s", GST_EVENT_TYPE_NAME (event)); @@ -611,20 +612,18 @@ gst_signal_processor_event (GstPad * pad, GstEvent * event) break; } case GST_EVENT_FLUSH_START: - ret = gst_pad_event_default (pad, event); + ret = gst_pad_event_default (pad, parent, event); break; case GST_EVENT_FLUSH_STOP: /* clear errors now */ self->flow_state = GST_FLOW_OK; - ret = gst_pad_event_default (pad, event); + ret = gst_pad_event_default (pad, parent, event); break; default: - ret = gst_pad_event_default (pad, event); + ret = gst_pad_event_default (pad, parent, event); break; } - gst_object_unref (self); - return ret; } @@ -967,14 +966,14 @@ gst_signal_processor_do_pulls (GstSignalProcessor * self, guint nframes) } static GstFlowReturn -gst_signal_processor_getrange (GstPad * pad, guint64 offset, +gst_signal_processor_getrange (GstPad * pad, GstObject * parent, guint64 offset, guint length, GstBuffer ** buffer) { GstSignalProcessor *self; GstSignalProcessorPad *spad = (GstSignalProcessorPad *) pad; GstFlowReturn ret = GST_FLOW_ERROR; - self = GST_SIGNAL_PROCESSOR (gst_pad_get_parent (pad)); + self = GST_SIGNAL_PROCESSOR (parent); if (spad->pen) { *buffer = spad->pen; @@ -998,8 +997,6 @@ gst_signal_processor_getrange (GstPad * pad, guint64 offset, GST_DEBUG_OBJECT (self, "returns %s", gst_flow_get_name (ret)); - gst_object_unref (self); - return ret; } @@ -1046,11 +1043,12 @@ gst_signal_processor_do_pushes (GstSignalProcessor * self) } static GstFlowReturn -gst_signal_processor_chain (GstPad * pad, GstBuffer * buffer) +gst_signal_processor_chain (GstPad * pad, GstObject * parent, + GstBuffer * buffer) { GstSignalProcessor *self; - self = GST_SIGNAL_PROCESSOR (gst_pad_get_parent (pad)); + self = GST_SIGNAL_PROCESSOR (parent); GST_LOG_OBJECT (self, "chain(%s:%s, %p) : p_in=%u, p_out=%u", GST_DEBUG_PAD_NAME (pad), buffer, self->pending_in, self->pending_out); @@ -1062,8 +1060,6 @@ gst_signal_processor_chain (GstPad * pad, GstBuffer * buffer) gst_signal_processor_do_pushes (self); } - gst_object_unref (self); - return self->flow_state; } diff --git a/gst-libs/gst/video/gstbasevideodecoder.c b/gst-libs/gst/video/gstbasevideodecoder.c index 726a6674c3..63c052e8df 100644 --- a/gst-libs/gst/video/gstbasevideodecoder.c +++ b/gst-libs/gst/video/gstbasevideodecoder.c @@ -140,11 +140,11 @@ static void gst_base_video_decoder_finalize (GObject * object); static gboolean gst_base_video_decoder_setcaps (GstBaseVideoDecoder * vdec, GstCaps * caps); static gboolean gst_base_video_decoder_sink_event (GstPad * pad, - GstEvent * event); + GstObject * parent, GstEvent * event); static gboolean gst_base_video_decoder_src_event (GstPad * pad, - GstEvent * event); + GstObject * parent, GstEvent * event); static GstFlowReturn gst_base_video_decoder_chain (GstPad * pad, - GstBuffer * buf); + GstObject * parent, GstBuffer * buf); static gboolean gst_base_video_decoder_sink_query (GstPad * pad, GstObject * parent, GstQuery * query); static GstStateChangeReturn gst_base_video_decoder_change_state (GstElement * @@ -308,8 +308,8 @@ gst_base_video_decoder_setcaps (GstBaseVideoDecoder * base_video_decoder, } if (ret) { - gst_buffer_replace (&GST_BASE_VIDEO_CODEC (base_video_decoder)->state. - codec_data, NULL); + gst_buffer_replace (&GST_BASE_VIDEO_CODEC (base_video_decoder)-> + state.codec_data, NULL); gst_caps_replace (&GST_BASE_VIDEO_CODEC (base_video_decoder)->state.caps, NULL); GST_BASE_VIDEO_CODEC (base_video_decoder)->state = state; @@ -387,13 +387,14 @@ gst_base_video_decoder_flush (GstBaseVideoDecoder * dec, gboolean hard) } static gboolean -gst_base_video_decoder_sink_event (GstPad * pad, GstEvent * event) +gst_base_video_decoder_sink_event (GstPad * pad, GstObject * parent, + GstEvent * event) { GstBaseVideoDecoder *base_video_decoder; GstBaseVideoDecoderClass *base_video_decoder_class; gboolean ret = FALSE; - base_video_decoder = GST_BASE_VIDEO_DECODER (gst_pad_get_parent (pad)); + base_video_decoder = GST_BASE_VIDEO_DECODER (parent); base_video_decoder_class = GST_BASE_VIDEO_DECODER_GET_CLASS (base_video_decoder); @@ -499,7 +500,6 @@ gst_base_video_decoder_sink_event (GstPad * pad, GstEvent * event) } done: - gst_object_unref (base_video_decoder); return ret; newseg_wrong_format: @@ -580,12 +580,13 @@ gst_base_video_decoder_do_seek (GstBaseVideoDecoder * dec, GstEvent * event) } static gboolean -gst_base_video_decoder_src_event (GstPad * pad, GstEvent * event) +gst_base_video_decoder_src_event (GstPad * pad, GstObject * parent, + GstEvent * event) { GstBaseVideoDecoder *base_video_decoder; gboolean res = FALSE; - base_video_decoder = GST_BASE_VIDEO_DECODER (gst_pad_get_parent (pad)); + base_video_decoder = GST_BASE_VIDEO_DECODER (parent); GST_DEBUG_OBJECT (base_video_decoder, "received event %d, %s", GST_EVENT_TYPE (event), @@ -686,7 +687,6 @@ gst_base_video_decoder_src_event (GstPad * pad, GstEvent * event) break; } done: - gst_object_unref (base_video_decoder); return res; convert_error: @@ -1207,12 +1207,12 @@ gst_base_video_decoder_chain_reverse (GstBaseVideoDecoder * dec, } static GstFlowReturn -gst_base_video_decoder_chain (GstPad * pad, GstBuffer * buf) +gst_base_video_decoder_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) { GstBaseVideoDecoder *base_video_decoder; GstFlowReturn ret = GST_FLOW_OK; - base_video_decoder = GST_BASE_VIDEO_DECODER (GST_PAD_PARENT (pad)); + base_video_decoder = GST_BASE_VIDEO_DECODER (parent); GST_LOG_OBJECT (base_video_decoder, "chain %" GST_TIME_FORMAT " duration %" GST_TIME_FORMAT " size %d", diff --git a/gst-libs/gst/video/gstbasevideoencoder.c b/gst-libs/gst/video/gstbasevideoencoder.c index 0454e77806..1cdd07f01f 100644 --- a/gst-libs/gst/video/gstbasevideoencoder.c +++ b/gst-libs/gst/video/gstbasevideoencoder.c @@ -118,13 +118,13 @@ static void gst_base_video_encoder_finalize (GObject * object); static GstCaps *gst_base_video_encoder_sink_getcaps (GstPad * pad, GstCaps * filter); static gboolean gst_base_video_encoder_src_event (GstPad * pad, - GstEvent * event); + GstObject * parent, GstEvent * event); static gboolean gst_base_video_encoder_sink_event (GstPad * pad, - GstEvent * event); + GstObject * parent, GstEvent * event); static gboolean gst_base_video_encoder_sink_query (GstPad * pad, GstObject * parent, GstQuery * query); static GstFlowReturn gst_base_video_encoder_chain (GstPad * pad, - GstBuffer * buf); + GstObject * parent, GstBuffer * buf); static GstStateChangeReturn gst_base_video_encoder_change_state (GstElement * element, GstStateChange transition); static gboolean gst_base_video_encoder_src_query (GstPad * pad, @@ -132,8 +132,7 @@ static gboolean gst_base_video_encoder_src_query (GstPad * pad, #define gst_base_video_encoder_parent_class parent_class G_DEFINE_TYPE_WITH_CODE (GstBaseVideoEncoder, gst_base_video_encoder, - GST_TYPE_BASE_VIDEO_CODEC, G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, NULL); - ); + GST_TYPE_BASE_VIDEO_CODEC, G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, NULL);); static void gst_base_video_encoder_class_init (GstBaseVideoEncoderClass * klass) @@ -546,14 +545,15 @@ gst_base_video_encoder_sink_eventfunc (GstBaseVideoEncoder * base_video_encoder, } static gboolean -gst_base_video_encoder_sink_event (GstPad * pad, GstEvent * event) +gst_base_video_encoder_sink_event (GstPad * pad, GstObject * parent, + GstEvent * event) { GstBaseVideoEncoder *enc; GstBaseVideoEncoderClass *klass; gboolean handled = FALSE; gboolean ret = TRUE; - enc = GST_BASE_VIDEO_ENCODER (gst_pad_get_parent (pad)); + enc = GST_BASE_VIDEO_ENCODER (parent); klass = GST_BASE_VIDEO_ENCODER_GET_CLASS (enc); GST_DEBUG_OBJECT (enc, "received event %d, %s", GST_EVENT_TYPE (event), @@ -591,17 +591,17 @@ gst_base_video_encoder_sink_event (GstPad * pad, GstEvent * event) GST_DEBUG_OBJECT (enc, "event handled"); - gst_object_unref (enc); return ret; } static gboolean -gst_base_video_encoder_src_event (GstPad * pad, GstEvent * event) +gst_base_video_encoder_src_event (GstPad * pad, GstObject * parent, + GstEvent * event) { GstBaseVideoEncoder *base_video_encoder; gboolean ret = FALSE; - base_video_encoder = GST_BASE_VIDEO_ENCODER (gst_pad_get_parent (pad)); + base_video_encoder = GST_BASE_VIDEO_ENCODER (parent); GST_LOG_OBJECT (base_video_encoder, "handling event: %" GST_PTR_FORMAT, event); @@ -634,7 +634,6 @@ gst_base_video_encoder_src_event (GstPad * pad, GstEvent * event) break; } - gst_object_unref (base_video_encoder); return ret; } @@ -701,14 +700,14 @@ error: } static GstFlowReturn -gst_base_video_encoder_chain (GstPad * pad, GstBuffer * buf) +gst_base_video_encoder_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) { GstBaseVideoEncoder *base_video_encoder; GstBaseVideoEncoderClass *klass; GstVideoFrameState *frame; GstFlowReturn ret = GST_FLOW_OK; - base_video_encoder = GST_BASE_VIDEO_ENCODER (gst_pad_get_parent (pad)); + base_video_encoder = GST_BASE_VIDEO_ENCODER (parent); klass = GST_BASE_VIDEO_ENCODER_GET_CLASS (base_video_encoder); g_return_val_if_fail (klass->handle_frame != NULL, GST_FLOW_ERROR); @@ -773,8 +772,6 @@ gst_base_video_encoder_chain (GstPad * pad, GstBuffer * buf) done: GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_encoder); - g_object_unref (base_video_encoder); - return ret; } diff --git a/gst/audiovisualizers/gstbaseaudiovisualizer.c b/gst/audiovisualizers/gstbaseaudiovisualizer.c index 57285283f0..0c8ba7df0c 100644 --- a/gst/audiovisualizers/gstbaseaudiovisualizer.c +++ b/gst/audiovisualizers/gstbaseaudiovisualizer.c @@ -69,12 +69,12 @@ static gboolean gst_base_audio_visualizer_sink_setcaps (GstBaseAudioVisualizer * scope, GstCaps * caps); static GstFlowReturn gst_base_audio_visualizer_chain (GstPad * pad, - GstBuffer * buffer); + GstObject * parent, GstBuffer * buffer); static gboolean gst_base_audio_visualizer_src_event (GstPad * pad, - GstEvent * event); + GstObject * parent, GstEvent * event); static gboolean gst_base_audio_visualizer_sink_event (GstPad * pad, - GstEvent * event); + GstObject * parent, GstEvent * event); static gboolean gst_base_audio_visualizer_src_query (GstPad * pad, GstObject * parent, GstQuery * query); @@ -783,7 +783,8 @@ gst_base_audio_visualizer_ensure_negotiated (GstBaseAudioVisualizer * scope) } static GstFlowReturn -gst_base_audio_visualizer_chain (GstPad * pad, GstBuffer * buffer) +gst_base_audio_visualizer_chain (GstPad * pad, GstObject * parent, + GstBuffer * buffer) { GstFlowReturn ret = GST_FLOW_OK; GstBaseAudioVisualizer *scope; @@ -795,7 +796,7 @@ gst_base_audio_visualizer_chain (GstPad * pad, GstBuffer * buffer) gboolean (*render) (GstBaseAudioVisualizer * scope, GstBuffer * audio, GstBuffer * video); - scope = GST_BASE_AUDIO_VISUALIZER (gst_pad_get_parent (pad)); + scope = GST_BASE_AUDIO_VISUALIZER (parent); klass = GST_BASE_AUDIO_VISUALIZER_CLASS (G_OBJECT_GET_CLASS (scope)); render = klass->render; @@ -937,18 +938,17 @@ gst_base_audio_visualizer_chain (GstPad * pad, GstBuffer * buffer) g_mutex_unlock (scope->config_lock); beach: - gst_object_unref (scope); - return ret; } static gboolean -gst_base_audio_visualizer_src_event (GstPad * pad, GstEvent * event) +gst_base_audio_visualizer_src_event (GstPad * pad, GstObject * parent, + GstEvent * event) { gboolean res; GstBaseAudioVisualizer *scope; - scope = GST_BASE_AUDIO_VISUALIZER (gst_pad_get_parent (pad)); + scope = GST_BASE_AUDIO_VISUALIZER (parent); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_QOS: @@ -977,18 +977,18 @@ gst_base_audio_visualizer_src_event (GstPad * pad, GstEvent * event) res = gst_pad_push_event (scope->sinkpad, event); break; } - gst_object_unref (scope); return res; } static gboolean -gst_base_audio_visualizer_sink_event (GstPad * pad, GstEvent * event) +gst_base_audio_visualizer_sink_event (GstPad * pad, GstObject * parent, + GstEvent * event) { gboolean res; GstBaseAudioVisualizer *scope; - scope = GST_BASE_AUDIO_VISUALIZER (gst_pad_get_parent (pad)); + scope = GST_BASE_AUDIO_VISUALIZER (parent); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_CAPS: @@ -1020,7 +1020,6 @@ gst_base_audio_visualizer_sink_event (GstPad * pad, GstEvent * event) res = gst_pad_push_event (scope->srcpad, event); break; } - gst_object_unref (scope); return res; } diff --git a/gst/dvbsuboverlay/gstdvbsuboverlay.c b/gst/dvbsuboverlay/gstdvbsuboverlay.c index 06879d5380..3a6b12efd1 100644 --- a/gst/dvbsuboverlay/gstdvbsuboverlay.c +++ b/gst/dvbsuboverlay/gstdvbsuboverlay.c @@ -97,13 +97,16 @@ G_DEFINE_TYPE (GstDVBSubOverlay, gst_dvbsub_overlay, GST_TYPE_ELEMENT); static GstCaps *gst_dvbsub_overlay_getcaps (GstPad * pad, GstCaps * filter); static GstFlowReturn gst_dvbsub_overlay_chain_video (GstPad * pad, - GstBuffer * buf); + GstObject * parent, GstBuffer * buf); static GstFlowReturn gst_dvbsub_overlay_chain_text (GstPad * pad, - GstBuffer * buf); + GstObject * parent, GstBuffer * buf); -static gboolean gst_dvbsub_overlay_event_video (GstPad * pad, GstEvent * event); -static gboolean gst_dvbsub_overlay_event_text (GstPad * pad, GstEvent * event); -static gboolean gst_dvbsub_overlay_event_src (GstPad * pad, GstEvent * event); +static gboolean gst_dvbsub_overlay_event_video (GstPad * pad, + GstObject * parent, GstEvent * event); +static gboolean gst_dvbsub_overlay_event_text (GstPad * pad, GstObject * parent, + GstEvent * event); +static gboolean gst_dvbsub_overlay_event_src (GstPad * pad, GstObject * parent, + GstEvent * event); static void new_dvb_subtitles_cb (DvbSub * dvb_sub, DVBSubtitles * subs, gpointer user_data); @@ -353,9 +356,10 @@ gst_dvbsub_overlay_query_src (GstPad * pad, GstObject * parent, } static gboolean -gst_dvbsub_overlay_event_src (GstPad * pad, GstEvent * event) +gst_dvbsub_overlay_event_src (GstPad * pad, GstObject * parent, + GstEvent * event) { - GstDVBSubOverlay *render = GST_DVBSUB_OVERLAY (gst_pad_get_parent (pad)); + GstDVBSubOverlay *render = GST_DVBSUB_OVERLAY (parent); gboolean ret = FALSE; switch (GST_EVENT_TYPE (event)) { @@ -389,8 +393,6 @@ gst_dvbsub_overlay_event_src (GstPad * pad, GstEvent * event) break; } - gst_object_unref (render); - return ret; } @@ -740,9 +742,10 @@ new_dvb_subtitles_cb (DvbSub * dvb_sub, DVBSubtitles * subs, gpointer user_data) } static GstFlowReturn -gst_dvbsub_overlay_chain_text (GstPad * pad, GstBuffer * buffer) +gst_dvbsub_overlay_chain_text (GstPad * pad, GstObject * parent, + GstBuffer * buffer) { - GstDVBSubOverlay *overlay = GST_DVBSUB_OVERLAY (GST_PAD_PARENT (pad)); + GstDVBSubOverlay *overlay = GST_DVBSUB_OVERLAY (parent); GstClockTime sub_running_time; GST_INFO_OBJECT (overlay, "subpicture/x-dvb buffer with size %u", @@ -785,9 +788,10 @@ gst_dvbsub_overlay_chain_text (GstPad * pad, GstBuffer * buffer) } static GstFlowReturn -gst_dvbsub_overlay_chain_video (GstPad * pad, GstBuffer * buffer) +gst_dvbsub_overlay_chain_video (GstPad * pad, GstObject * parent, + GstBuffer * buffer) { - GstDVBSubOverlay *overlay = GST_DVBSUB_OVERLAY (GST_PAD_PARENT (pad)); + GstDVBSubOverlay *overlay = GST_DVBSUB_OVERLAY (parent); GstFlowReturn ret = GST_FLOW_OK; gint64 start, stop; guint64 cstart, cstop; @@ -954,10 +958,11 @@ gst_dvbsub_overlay_query_video (GstPad * pad, GstObject * parent, } static gboolean -gst_dvbsub_overlay_event_video (GstPad * pad, GstEvent * event) +gst_dvbsub_overlay_event_video (GstPad * pad, GstObject * parent, + GstEvent * event) { gboolean ret = FALSE; - GstDVBSubOverlay *render = GST_DVBSUB_OVERLAY (gst_pad_get_parent (pad)); + GstDVBSubOverlay *render = GST_DVBSUB_OVERLAY (parent); GST_DEBUG_OBJECT (pad, "received video event %s", GST_EVENT_TYPE_NAME (event)); @@ -1004,16 +1009,15 @@ gst_dvbsub_overlay_event_video (GstPad * pad, GstEvent * event) break; } - gst_object_unref (render); - return ret; } static gboolean -gst_dvbsub_overlay_event_text (GstPad * pad, GstEvent * event) +gst_dvbsub_overlay_event_text (GstPad * pad, GstObject * parent, + GstEvent * event) { gboolean ret = FALSE; - GstDVBSubOverlay *render = GST_DVBSUB_OVERLAY (gst_pad_get_parent (pad)); + GstDVBSubOverlay *render = GST_DVBSUB_OVERLAY (parent); GST_DEBUG_OBJECT (pad, "received text event %s", GST_EVENT_TYPE_NAME (event)); @@ -1067,8 +1071,6 @@ gst_dvbsub_overlay_event_text (GstPad * pad, GstEvent * event) break; } - gst_object_unref (render); - return ret; } diff --git a/gst/dvdspu/gstdvdspu.c b/gst/dvdspu/gstdvdspu.c index e0967f031f..8b1b16295a 100644 --- a/gst/dvdspu/gstdvdspu.c +++ b/gst/dvdspu/gstdvdspu.c @@ -90,22 +90,27 @@ static void gst_dvd_spu_finalize (GObject * object); static GstStateChangeReturn gst_dvd_spu_change_state (GstElement * element, GstStateChange transition); -static gboolean gst_dvd_spu_src_event (GstPad * pad, GstEvent * event); +static gboolean gst_dvd_spu_src_event (GstPad * pad, GstObject * parent, + GstEvent * event); static gboolean gst_dvd_spu_src_query (GstPad * pad, GstObject * parent, GstQuery * query); static GstCaps *gst_dvd_spu_video_proxy_getcaps (GstPad * pad, GstCaps * filter); static gboolean gst_dvd_spu_video_set_caps (GstPad * pad, GstCaps * caps); -static GstFlowReturn gst_dvd_spu_video_chain (GstPad * pad, GstBuffer * buf); -static gboolean gst_dvd_spu_video_event (GstPad * pad, GstEvent * event); +static GstFlowReturn gst_dvd_spu_video_chain (GstPad * pad, GstObject * parent, + GstBuffer * buf); +static gboolean gst_dvd_spu_video_event (GstPad * pad, GstObject * parent, + GstEvent * event); static gboolean gst_dvd_spu_video_query (GstPad * pad, GstObject * parent, GstQuery * query); static void gst_dvd_spu_redraw_still (GstDVDSpu * dvdspu, gboolean force); static void gst_dvd_spu_check_still_updates (GstDVDSpu * dvdspu); -static GstFlowReturn gst_dvd_spu_subpic_chain (GstPad * pad, GstBuffer * buf); -static gboolean gst_dvd_spu_subpic_event (GstPad * pad, GstEvent * event); +static GstFlowReturn gst_dvd_spu_subpic_chain (GstPad * pad, GstObject * parent, + GstBuffer * buf); +static gboolean gst_dvd_spu_subpic_event (GstPad * pad, GstObject * parent, + GstEvent * event); static gboolean gst_dvd_spu_subpic_set_caps (GstPad * pad, GstCaps * caps); static void gst_dvd_spu_clear (GstDVDSpu * dvdspu); @@ -273,9 +278,9 @@ gst_dvd_spu_flush_spu_info (GstDVDSpu * dvdspu, gboolean keep_events) } static gboolean -gst_dvd_spu_src_event (GstPad * pad, GstEvent * event) +gst_dvd_spu_src_event (GstPad * pad, GstObject * parent, GstEvent * event) { - GstDVDSpu *dvdspu = GST_DVD_SPU (gst_pad_get_parent (pad)); + GstDVDSpu *dvdspu = GST_DVD_SPU (parent); GstPad *peer; gboolean res = TRUE; @@ -284,8 +289,6 @@ gst_dvd_spu_src_event (GstPad * pad, GstEvent * event) res = gst_pad_send_event (peer, event); gst_object_unref (peer); } - - gst_object_unref (dvdspu); return res; } @@ -372,14 +375,12 @@ gst_dvd_spu_video_proxy_getcaps (GstPad * pad, GstCaps * filter) } static gboolean -gst_dvd_spu_video_event (GstPad * pad, GstEvent * event) +gst_dvd_spu_video_event (GstPad * pad, GstObject * parent, GstEvent * event) { - GstDVDSpu *dvdspu = (GstDVDSpu *) (gst_object_get_parent (GST_OBJECT (pad))); + GstDVDSpu *dvdspu = (GstDVDSpu *) parent; SpuState *state = &dvdspu->spu_state; gboolean res = TRUE; - g_return_val_if_fail (dvdspu != NULL, FALSE); - switch (GST_EVENT_TYPE (event)) { case GST_EVENT_CAPS: { @@ -399,7 +400,7 @@ gst_dvd_spu_video_event (GstPad * pad, GstEvent * event) GstBuffer *to_push = NULL; /* Forward the event before handling */ - res = gst_pad_event_default (pad, event); + res = gst_pad_event_default (pad, parent, event); GST_DEBUG_OBJECT (dvdspu, "Still frame event on video pad: in-still = %d", in_still); @@ -425,7 +426,7 @@ gst_dvd_spu_video_event (GstPad * pad, GstEvent * event) } else { GST_DEBUG_OBJECT (dvdspu, "Custom event %" GST_PTR_FORMAT " on video pad", event); - res = gst_pad_event_default (pad, event); + res = gst_pad_event_default (pad, parent, event); } break; } @@ -465,14 +466,14 @@ gst_dvd_spu_video_event (GstPad * pad, GstEvent * event) dvdspu->video_seg = seg; DVD_SPU_UNLOCK (dvdspu); - res = gst_pad_event_default (pad, event); + res = gst_pad_event_default (pad, parent, event); break; } case GST_EVENT_FLUSH_START: - res = gst_pad_event_default (pad, event); + res = gst_pad_event_default (pad, parent, event); goto done; case GST_EVENT_FLUSH_STOP: - res = gst_pad_event_default (pad, event); + res = gst_pad_event_default (pad, parent, event); DVD_SPU_LOCK (dvdspu); gst_segment_init (&dvdspu->video_seg, GST_FORMAT_UNDEFINED); @@ -482,12 +483,11 @@ gst_dvd_spu_video_event (GstPad * pad, GstEvent * event) DVD_SPU_UNLOCK (dvdspu); goto done; default: - res = gst_pad_event_default (pad, event); + res = gst_pad_event_default (pad, parent, event); break; } done: - gst_object_unref (dvdspu); return res; #if 0 error: @@ -522,9 +522,9 @@ gst_dvd_spu_video_query (GstPad * pad, GstObject * parent, GstQuery * query) } static GstFlowReturn -gst_dvd_spu_video_chain (GstPad * pad, GstBuffer * buf) +gst_dvd_spu_video_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) { - GstDVDSpu *dvdspu = (GstDVDSpu *) (gst_object_get_parent (GST_OBJECT (pad))); + GstDVDSpu *dvdspu = (GstDVDSpu *) parent; GstFlowReturn ret; g_return_val_if_fail (dvdspu != NULL, GST_FLOW_ERROR); @@ -534,8 +534,6 @@ gst_dvd_spu_video_chain (GstPad * pad, GstBuffer * buf) ret = dvdspu_handle_vid_buffer (dvdspu, buf); - gst_object_unref (dvdspu); - return ret; } @@ -879,9 +877,9 @@ submit_new_spu_packet (GstDVDSpu * dvdspu, GstBuffer * buf) } static GstFlowReturn -gst_dvd_spu_subpic_chain (GstPad * pad, GstBuffer * buf) +gst_dvd_spu_subpic_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) { - GstDVDSpu *dvdspu = (GstDVDSpu *) (gst_object_get_parent (GST_OBJECT (pad))); + GstDVDSpu *dvdspu = (GstDVDSpu *) parent; GstFlowReturn ret = GST_FLOW_OK; gsize size; @@ -1000,23 +998,25 @@ gst_dvd_spu_subpic_chain (GstPad * pad, GstBuffer * buf) done: DVD_SPU_UNLOCK (dvdspu); - gst_object_unref (dvdspu); + return ret; + + /* ERRORS */ caps_not_set: - GST_ELEMENT_ERROR (dvdspu, RESOURCE, NO_SPACE_LEFT, - (_("Subpicture format was not configured before data flow")), (NULL)); - ret = GST_FLOW_ERROR; - goto done; + { + GST_ELEMENT_ERROR (dvdspu, RESOURCE, NO_SPACE_LEFT, + (_("Subpicture format was not configured before data flow")), (NULL)); + ret = GST_FLOW_ERROR; + goto done; + } } static gboolean -gst_dvd_spu_subpic_event (GstPad * pad, GstEvent * event) +gst_dvd_spu_subpic_event (GstPad * pad, GstObject * parent, GstEvent * event) { - GstDVDSpu *dvdspu = (GstDVDSpu *) (gst_object_get_parent (GST_OBJECT (pad))); + GstDVDSpu *dvdspu = (GstDVDSpu *) parent; gboolean res = TRUE; - g_return_val_if_fail (dvdspu != NULL, FALSE); - /* Some events on the subpicture sink pad just get ignored, like * FLUSH_START */ switch (GST_EVENT_TYPE (event)) { @@ -1036,7 +1036,7 @@ gst_dvd_spu_subpic_event (GstPad * pad, GstEvent * event) gboolean need_push; if (!gst_structure_has_name (structure, "application/x-gst-dvd")) { - res = gst_pad_event_default (pad, event); + res = gst_pad_event_default (pad, parent, event); break; } @@ -1126,12 +1126,11 @@ gst_dvd_spu_subpic_event (GstPad * pad, GstEvent * event) goto done; break; default: - res = gst_pad_event_default (pad, event); + res = gst_pad_event_default (pad, parent, event); break; } done: - gst_object_unref (dvdspu); return res; } diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c index ae76dc59ec..8714583d59 100644 --- a/gst/mpegtsdemux/mpegtsbase.c +++ b/gst/mpegtsdemux/mpegtsbase.c @@ -80,8 +80,10 @@ static void mpegts_base_free_stream (MpegTSBaseStream * ptream); static gboolean mpegts_base_sink_activate (GstPad * pad); static gboolean mpegts_base_sink_activate_pull (GstPad * pad, gboolean active); static gboolean mpegts_base_sink_activate_push (GstPad * pad, gboolean active); -static GstFlowReturn mpegts_base_chain (GstPad * pad, GstBuffer * buf); -static gboolean mpegts_base_sink_event (GstPad * pad, GstEvent * event); +static GstFlowReturn mpegts_base_chain (GstPad * pad, GstObject * parent, + GstBuffer * buf); +static gboolean mpegts_base_sink_event (GstPad * pad, GstObject * parent, + GstEvent * event); static GstStateChangeReturn mpegts_base_change_state (GstElement * element, GstStateChange transition); @@ -1183,10 +1185,10 @@ mpegts_base_flush (MpegTSBase * base) } static gboolean -mpegts_base_sink_event (GstPad * pad, GstEvent * event) +mpegts_base_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) { gboolean res = TRUE; - MpegTSBase *base = GST_MPEGTS_BASE (gst_object_get_parent (GST_OBJECT (pad))); + MpegTSBase *base = GST_MPEGTS_BASE (parent); GST_WARNING_OBJECT (base, "Got event %s", gst_event_type_get_name (GST_EVENT_TYPE (event))); @@ -1221,8 +1223,6 @@ mpegts_base_sink_event (GstPad * pad, GstEvent * event) res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event); gst_event_unref (event); } - - gst_object_unref (base); return res; } @@ -1242,7 +1242,7 @@ mpegts_base_push (MpegTSBase * base, MpegTSPacketizerPacket * packet, } static GstFlowReturn -mpegts_base_chain (GstPad * pad, GstBuffer * buf) +mpegts_base_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) { GstFlowReturn res = GST_FLOW_OK; MpegTSBase *base; @@ -1251,7 +1251,7 @@ mpegts_base_chain (GstPad * pad, GstBuffer * buf) MpegTSPacketizer2 *packetizer; MpegTSPacketizerPacket packet; - base = GST_MPEGTS_BASE (gst_object_get_parent (GST_OBJECT (pad))); + base = GST_MPEGTS_BASE (parent); packetizer = base->packetizer; if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (base->first_buf_ts)) && @@ -1311,7 +1311,6 @@ mpegts_base_chain (GstPad * pad, GstBuffer * buf) mpegts_packetizer_clear_packet (base->packetizer, &packet); } - gst_object_unref (base); return res; } @@ -1373,6 +1372,7 @@ static void mpegts_base_loop (MpegTSBase * base) { GstFlowReturn ret = GST_FLOW_ERROR; + switch (base->mode) { case BASE_MODE_SCANNING: /* Find first sync point */ @@ -1397,7 +1397,7 @@ mpegts_base_loop (MpegTSBase * base) if (G_UNLIKELY (ret != GST_FLOW_OK)) goto error; base->seek_offset += gst_buffer_get_size (buf); - ret = mpegts_base_chain (base->sinkpad, buf); + ret = mpegts_base_chain (base->sinkpad, GST_OBJECT_CAST (base), buf); if (G_UNLIKELY (ret != GST_FLOW_OK)) goto error; } diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index 0585a5e7f5..9e82755a3a 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -855,10 +855,10 @@ done: } static gboolean -gst_ts_demux_srcpad_event (GstPad * pad, GstEvent * event) +gst_ts_demux_srcpad_event (GstPad * pad, GstObject * parent, GstEvent * event) { gboolean res = TRUE; - GstTSDemux *demux = GST_TS_DEMUX (gst_pad_get_parent (pad)); + GstTSDemux *demux = GST_TS_DEMUX (parent); GST_DEBUG_OBJECT (pad, "Got event %s", gst_event_type_get_name (GST_EVENT_TYPE (event))); @@ -871,10 +871,9 @@ gst_ts_demux_srcpad_event (GstPad * pad, GstEvent * event) gst_event_unref (event); break; default: - res = gst_pad_event_default (pad, event); + res = gst_pad_event_default (pad, parent, event); } - gst_object_unref (demux); return res; } diff --git a/gst/sdp/gstsdpdemux.c b/gst/sdp/gstsdpdemux.c index e8032fadb4..f9b2aec2c7 100644 --- a/gst/sdp/gstsdpdemux.c +++ b/gst/sdp/gstsdpdemux.c @@ -132,8 +132,9 @@ static void gst_sdp_demux_handle_message (GstBin * bin, GstMessage * message); static void gst_sdp_demux_stream_push_event (GstSDPDemux * demux, GstSDPStream * stream, GstEvent * event); -static gboolean gst_sdp_demux_sink_event (GstPad * pad, GstEvent * event); -static GstFlowReturn gst_sdp_demux_sink_chain (GstPad * pad, +static gboolean gst_sdp_demux_sink_event (GstPad * pad, GstObject * parent, + GstEvent * event); +static GstFlowReturn gst_sdp_demux_sink_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer); /*static guint gst_sdp_demux_signals[LAST_SIGNAL] = { 0 }; */ @@ -387,12 +388,12 @@ is_multicast_address (const gchar * host_name) for (ai = res; !ret && ai; ai = ai->ai_next) { if (ai->ai_family == AF_INET) ret = - IN_MULTICAST (ntohl (((struct sockaddr_in *) ai->ai_addr)-> - sin_addr.s_addr)); + IN_MULTICAST (ntohl (((struct sockaddr_in *) ai->ai_addr)->sin_addr. + s_addr)); else ret = - IN6_IS_ADDR_MULTICAST (&((struct sockaddr_in6 *) ai-> - ai_addr)->sin6_addr); + IN6_IS_ADDR_MULTICAST (&((struct sockaddr_in6 *) ai->ai_addr)-> + sin6_addr); } freeaddrinfo (res); @@ -1471,12 +1472,12 @@ start_session_failure: } static gboolean -gst_sdp_demux_sink_event (GstPad * pad, GstEvent * event) +gst_sdp_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) { GstSDPDemux *demux; gboolean res = TRUE; - demux = GST_SDP_DEMUX (gst_pad_get_parent (pad)); + demux = GST_SDP_DEMUX (parent); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_EOS: @@ -1488,24 +1489,21 @@ gst_sdp_demux_sink_event (GstPad * pad, GstEvent * event) gst_event_unref (event); break; } - gst_object_unref (demux); return res; } static GstFlowReturn -gst_sdp_demux_sink_chain (GstPad * pad, GstBuffer * buffer) +gst_sdp_demux_sink_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) { GstSDPDemux *demux; - demux = GST_SDP_DEMUX (gst_pad_get_parent (pad)); + demux = GST_SDP_DEMUX (parent); /* push the SDP message in an adapter, we start doing something with it when * we receive EOS */ gst_adapter_push (demux->adapter, buffer); - gst_object_unref (demux); - return GST_FLOW_OK; } diff --git a/gst/y4m/gsty4mdec.c b/gst/y4m/gsty4mdec.c index f39632227b..3b431bda03 100644 --- a/gst/y4m/gsty4mdec.c +++ b/gst/y4m/gsty4mdec.c @@ -55,10 +55,13 @@ static void gst_y4m_dec_get_property (GObject * object, static void gst_y4m_dec_dispose (GObject * object); static void gst_y4m_dec_finalize (GObject * object); -static GstFlowReturn gst_y4m_dec_chain (GstPad * pad, GstBuffer * buffer); -static gboolean gst_y4m_dec_sink_event (GstPad * pad, GstEvent * event); +static GstFlowReturn gst_y4m_dec_chain (GstPad * pad, GstObject * parent, + GstBuffer * buffer); +static gboolean gst_y4m_dec_sink_event (GstPad * pad, GstObject * parent, + GstEvent * event); -static gboolean gst_y4m_dec_src_event (GstPad * pad, GstEvent * event); +static gboolean gst_y4m_dec_src_event (GstPad * pad, GstObject * parent, + GstEvent * event); static gboolean gst_y4m_dec_src_query (GstPad * pad, GstObject * parent, GstQuery * query); @@ -415,7 +418,7 @@ error: } static GstFlowReturn -gst_y4m_dec_chain (GstPad * pad, GstBuffer * buffer) +gst_y4m_dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) { GstY4mDec *y4mdec; int n_avail; @@ -425,7 +428,7 @@ gst_y4m_dec_chain (GstPad * pad, GstBuffer * buffer) int i; int len; - y4mdec = GST_Y4M_DEC (gst_pad_get_parent (pad)); + y4mdec = GST_Y4M_DEC (parent); GST_DEBUG_OBJECT (y4mdec, "chain"); @@ -545,18 +548,18 @@ gst_y4m_dec_chain (GstPad * pad, GstBuffer * buffer) break; } - gst_object_unref (y4mdec); GST_DEBUG ("returning %d", flow_ret); + return flow_ret; } static gboolean -gst_y4m_dec_sink_event (GstPad * pad, GstEvent * event) +gst_y4m_dec_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) { gboolean res; GstY4mDec *y4mdec; - y4mdec = GST_Y4M_DEC (gst_pad_get_parent (pad)); + y4mdec = GST_Y4M_DEC (parent); GST_DEBUG_OBJECT (y4mdec, "event"); @@ -592,17 +595,16 @@ gst_y4m_dec_sink_event (GstPad * pad, GstEvent * event) break; } - gst_object_unref (y4mdec); return res; } static gboolean -gst_y4m_dec_src_event (GstPad * pad, GstEvent * event) +gst_y4m_dec_src_event (GstPad * pad, GstObject * parent, GstEvent * event) { gboolean res; GstY4mDec *y4mdec; - y4mdec = GST_Y4M_DEC (gst_pad_get_parent (pad)); + y4mdec = GST_Y4M_DEC (parent); GST_DEBUG_OBJECT (y4mdec, "event"); @@ -643,7 +645,6 @@ gst_y4m_dec_src_event (GstPad * pad, GstEvent * event) break; } - gst_object_unref (y4mdec); return res; }