add parent to pad functions

This commit is contained in:
Wim Taymans 2011-11-17 15:53:42 +01:00
parent 2711109c13
commit 940de5b195
11 changed files with 169 additions and 178 deletions

View File

@ -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_video (GstPad * pad, GstCaps * caps);
static gboolean gst_ass_render_setcaps_text (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_video (GstPad * pad,
static GstFlowReturn gst_ass_render_chain_text (GstPad * pad, GstBuffer * buf); 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_video (GstPad * pad, GstObject * parent,
static gboolean gst_ass_render_event_text (GstPad * pad, GstEvent * event); GstEvent * event);
static gboolean gst_ass_render_event_src (GstPad * pad, 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, static gboolean gst_ass_render_query_video (GstPad * pad, GstObject * parent,
GstQuery * query); GstQuery * query);
@ -377,9 +382,9 @@ gst_ass_render_query_src (GstPad * pad, GstObject * parent, GstQuery * query)
} }
static gboolean 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; gboolean ret = FALSE;
switch (GST_EVENT_TYPE (event)) { switch (GST_EVENT_TYPE (event)) {
@ -420,8 +425,6 @@ gst_ass_render_event_src (GstPad * pad, GstEvent * event)
break; break;
} }
gst_object_unref (render);
return ret; return ret;
} }
@ -903,9 +906,10 @@ gst_ass_render_process_text (GstAssRender * render, GstBuffer * buffer,
} }
static GstFlowReturn 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; GstFlowReturn ret = GST_FLOW_OK;
gboolean in_seg = FALSE; gboolean in_seg = FALSE;
guint64 start, stop, clip_start = 0, clip_stop = 0; guint64 start, stop, clip_start = 0, clip_stop = 0;
@ -1044,10 +1048,10 @@ out_of_segment:
} }
static GstFlowReturn 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; GstFlowReturn ret = GST_FLOW_OK;
GstAssRender *render = GST_ASS_RENDER (GST_PAD_PARENT (pad)); GstAssRender *render = GST_ASS_RENDER (parent);
GstClockTime timestamp, duration; GstClockTime timestamp, duration;
GstClockTime sub_running_time, vid_running_time; GstClockTime sub_running_time, vid_running_time;
GstClockTime sub_running_time_end; GstClockTime sub_running_time_end;
@ -1220,10 +1224,10 @@ gst_ass_render_handle_tags (GstAssRender * render, GstTagList * taglist)
} }
static gboolean 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; 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_DEBUG_OBJECT (pad, "received video event %s",
GST_EVENT_TYPE_NAME (event)); GST_EVENT_TYPE_NAME (event));
@ -1282,8 +1286,6 @@ gst_ass_render_event_video (GstPad * pad, GstEvent * event)
break; break;
} }
gst_object_unref (render);
return ret; return ret;
} }
@ -1313,11 +1315,11 @@ gst_ass_render_query_video (GstPad * pad, GstObject * parent, GstQuery * query)
} }
static gboolean static gboolean
gst_ass_render_event_text (GstPad * pad, GstEvent * event) gst_ass_render_event_text (GstPad * pad, GstObject * parent, GstEvent * event)
{ {
gint i; gint i;
gboolean ret = FALSE; 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)); 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; break;
} }
gst_object_unref (render);
return ret; return ret;
} }

View File

@ -204,11 +204,12 @@ static gboolean gst_signal_processor_sink_activate_push (GstPad * pad,
static GstStateChangeReturn gst_signal_processor_change_state (GstElement * static GstStateChangeReturn gst_signal_processor_change_state (GstElement *
element, GstStateChange transition); 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, 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, static GstFlowReturn gst_signal_processor_chain (GstPad * pad,
GstBuffer * buffer); GstObject * parent, GstBuffer * buffer);
static gboolean gst_signal_processor_setcaps (GstPad * pad, GstCaps * caps); static gboolean gst_signal_processor_setcaps (GstPad * pad, GstCaps * caps);
@ -583,13 +584,13 @@ gst_signal_processor_interleave_group (GstSignalProcessorGroup * group,
} }
static gboolean static gboolean
gst_signal_processor_event (GstPad * pad, GstEvent * event) gst_signal_processor_event (GstPad * pad, GstObject * parent, GstEvent * event)
{ {
GstSignalProcessor *self; GstSignalProcessor *self;
GstSignalProcessorClass *bclass; GstSignalProcessorClass *bclass;
gboolean ret; gboolean ret;
self = GST_SIGNAL_PROCESSOR (gst_pad_get_parent (pad)); self = GST_SIGNAL_PROCESSOR (parent);
bclass = GST_SIGNAL_PROCESSOR_GET_CLASS (self); bclass = GST_SIGNAL_PROCESSOR_GET_CLASS (self);
GST_DEBUG_OBJECT (pad, "got event %s", GST_EVENT_TYPE_NAME (event)); 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; break;
} }
case GST_EVENT_FLUSH_START: case GST_EVENT_FLUSH_START:
ret = gst_pad_event_default (pad, event); ret = gst_pad_event_default (pad, parent, event);
break; break;
case GST_EVENT_FLUSH_STOP: case GST_EVENT_FLUSH_STOP:
/* clear errors now */ /* clear errors now */
self->flow_state = GST_FLOW_OK; self->flow_state = GST_FLOW_OK;
ret = gst_pad_event_default (pad, event); ret = gst_pad_event_default (pad, parent, event);
break; break;
default: default:
ret = gst_pad_event_default (pad, event); ret = gst_pad_event_default (pad, parent, event);
break; break;
} }
gst_object_unref (self);
return ret; return ret;
} }
@ -967,14 +966,14 @@ gst_signal_processor_do_pulls (GstSignalProcessor * self, guint nframes)
} }
static GstFlowReturn static GstFlowReturn
gst_signal_processor_getrange (GstPad * pad, guint64 offset, gst_signal_processor_getrange (GstPad * pad, GstObject * parent, guint64 offset,
guint length, GstBuffer ** buffer) guint length, GstBuffer ** buffer)
{ {
GstSignalProcessor *self; GstSignalProcessor *self;
GstSignalProcessorPad *spad = (GstSignalProcessorPad *) pad; GstSignalProcessorPad *spad = (GstSignalProcessorPad *) pad;
GstFlowReturn ret = GST_FLOW_ERROR; GstFlowReturn ret = GST_FLOW_ERROR;
self = GST_SIGNAL_PROCESSOR (gst_pad_get_parent (pad)); self = GST_SIGNAL_PROCESSOR (parent);
if (spad->pen) { if (spad->pen) {
*buffer = 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_DEBUG_OBJECT (self, "returns %s", gst_flow_get_name (ret));
gst_object_unref (self);
return ret; return ret;
} }
@ -1046,11 +1043,12 @@ gst_signal_processor_do_pushes (GstSignalProcessor * self)
} }
static GstFlowReturn static GstFlowReturn
gst_signal_processor_chain (GstPad * pad, GstBuffer * buffer) gst_signal_processor_chain (GstPad * pad, GstObject * parent,
GstBuffer * buffer)
{ {
GstSignalProcessor *self; 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_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); 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_signal_processor_do_pushes (self);
} }
gst_object_unref (self);
return self->flow_state; return self->flow_state;
} }

View File

@ -140,11 +140,11 @@ static void gst_base_video_decoder_finalize (GObject * object);
static gboolean gst_base_video_decoder_setcaps (GstBaseVideoDecoder * vdec, static gboolean gst_base_video_decoder_setcaps (GstBaseVideoDecoder * vdec,
GstCaps * caps); GstCaps * caps);
static gboolean gst_base_video_decoder_sink_event (GstPad * pad, 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, 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, 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, static gboolean gst_base_video_decoder_sink_query (GstPad * pad,
GstObject * parent, GstQuery * query); GstObject * parent, GstQuery * query);
static GstStateChangeReturn gst_base_video_decoder_change_state (GstElement * static GstStateChangeReturn gst_base_video_decoder_change_state (GstElement *
@ -308,8 +308,8 @@ gst_base_video_decoder_setcaps (GstBaseVideoDecoder * base_video_decoder,
} }
if (ret) { if (ret) {
gst_buffer_replace (&GST_BASE_VIDEO_CODEC (base_video_decoder)->state. gst_buffer_replace (&GST_BASE_VIDEO_CODEC (base_video_decoder)->
codec_data, NULL); state.codec_data, NULL);
gst_caps_replace (&GST_BASE_VIDEO_CODEC (base_video_decoder)->state.caps, gst_caps_replace (&GST_BASE_VIDEO_CODEC (base_video_decoder)->state.caps,
NULL); NULL);
GST_BASE_VIDEO_CODEC (base_video_decoder)->state = state; GST_BASE_VIDEO_CODEC (base_video_decoder)->state = state;
@ -387,13 +387,14 @@ gst_base_video_decoder_flush (GstBaseVideoDecoder * dec, gboolean hard)
} }
static gboolean 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; GstBaseVideoDecoder *base_video_decoder;
GstBaseVideoDecoderClass *base_video_decoder_class; GstBaseVideoDecoderClass *base_video_decoder_class;
gboolean ret = FALSE; 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 = base_video_decoder_class =
GST_BASE_VIDEO_DECODER_GET_CLASS (base_video_decoder); GST_BASE_VIDEO_DECODER_GET_CLASS (base_video_decoder);
@ -499,7 +500,6 @@ gst_base_video_decoder_sink_event (GstPad * pad, GstEvent * event)
} }
done: done:
gst_object_unref (base_video_decoder);
return ret; return ret;
newseg_wrong_format: newseg_wrong_format:
@ -580,12 +580,13 @@ gst_base_video_decoder_do_seek (GstBaseVideoDecoder * dec, GstEvent * event)
} }
static gboolean 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; GstBaseVideoDecoder *base_video_decoder;
gboolean res = FALSE; 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, GST_DEBUG_OBJECT (base_video_decoder,
"received event %d, %s", GST_EVENT_TYPE (event), "received event %d, %s", GST_EVENT_TYPE (event),
@ -686,7 +687,6 @@ gst_base_video_decoder_src_event (GstPad * pad, GstEvent * event)
break; break;
} }
done: done:
gst_object_unref (base_video_decoder);
return res; return res;
convert_error: convert_error:
@ -1207,12 +1207,12 @@ gst_base_video_decoder_chain_reverse (GstBaseVideoDecoder * dec,
} }
static GstFlowReturn 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; GstBaseVideoDecoder *base_video_decoder;
GstFlowReturn ret = GST_FLOW_OK; 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, GST_LOG_OBJECT (base_video_decoder,
"chain %" GST_TIME_FORMAT " duration %" GST_TIME_FORMAT " size %d", "chain %" GST_TIME_FORMAT " duration %" GST_TIME_FORMAT " size %d",

View File

@ -118,13 +118,13 @@ static void gst_base_video_encoder_finalize (GObject * object);
static GstCaps *gst_base_video_encoder_sink_getcaps (GstPad * pad, static GstCaps *gst_base_video_encoder_sink_getcaps (GstPad * pad,
GstCaps * filter); GstCaps * filter);
static gboolean gst_base_video_encoder_src_event (GstPad * pad, 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, 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, static gboolean gst_base_video_encoder_sink_query (GstPad * pad,
GstObject * parent, GstQuery * query); GstObject * parent, GstQuery * query);
static GstFlowReturn gst_base_video_encoder_chain (GstPad * pad, static GstFlowReturn gst_base_video_encoder_chain (GstPad * pad,
GstBuffer * buf); GstObject * parent, GstBuffer * buf);
static GstStateChangeReturn gst_base_video_encoder_change_state (GstElement * static GstStateChangeReturn gst_base_video_encoder_change_state (GstElement *
element, GstStateChange transition); element, GstStateChange transition);
static gboolean gst_base_video_encoder_src_query (GstPad * pad, 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 #define gst_base_video_encoder_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstBaseVideoEncoder, gst_base_video_encoder, 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 static void
gst_base_video_encoder_class_init (GstBaseVideoEncoderClass * klass) gst_base_video_encoder_class_init (GstBaseVideoEncoderClass * klass)
@ -546,14 +545,15 @@ gst_base_video_encoder_sink_eventfunc (GstBaseVideoEncoder * base_video_encoder,
} }
static gboolean 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; GstBaseVideoEncoder *enc;
GstBaseVideoEncoderClass *klass; GstBaseVideoEncoderClass *klass;
gboolean handled = FALSE; gboolean handled = FALSE;
gboolean ret = TRUE; 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); klass = GST_BASE_VIDEO_ENCODER_GET_CLASS (enc);
GST_DEBUG_OBJECT (enc, "received event %d, %s", GST_EVENT_TYPE (event), 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_DEBUG_OBJECT (enc, "event handled");
gst_object_unref (enc);
return ret; return ret;
} }
static gboolean 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; GstBaseVideoEncoder *base_video_encoder;
gboolean ret = FALSE; 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, GST_LOG_OBJECT (base_video_encoder, "handling event: %" GST_PTR_FORMAT,
event); event);
@ -634,7 +634,6 @@ gst_base_video_encoder_src_event (GstPad * pad, GstEvent * event)
break; break;
} }
gst_object_unref (base_video_encoder);
return ret; return ret;
} }
@ -701,14 +700,14 @@ error:
} }
static GstFlowReturn 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; GstBaseVideoEncoder *base_video_encoder;
GstBaseVideoEncoderClass *klass; GstBaseVideoEncoderClass *klass;
GstVideoFrameState *frame; GstVideoFrameState *frame;
GstFlowReturn ret = GST_FLOW_OK; 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); klass = GST_BASE_VIDEO_ENCODER_GET_CLASS (base_video_encoder);
g_return_val_if_fail (klass->handle_frame != NULL, GST_FLOW_ERROR); 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: done:
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_encoder); GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_encoder);
g_object_unref (base_video_encoder);
return ret; return ret;
} }

View File

@ -69,12 +69,12 @@ static gboolean gst_base_audio_visualizer_sink_setcaps (GstBaseAudioVisualizer *
scope, GstCaps * caps); scope, GstCaps * caps);
static GstFlowReturn gst_base_audio_visualizer_chain (GstPad * pad, 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, 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, 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, static gboolean gst_base_audio_visualizer_src_query (GstPad * pad,
GstObject * parent, GstQuery * query); GstObject * parent, GstQuery * query);
@ -783,7 +783,8 @@ gst_base_audio_visualizer_ensure_negotiated (GstBaseAudioVisualizer * scope)
} }
static GstFlowReturn 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; GstFlowReturn ret = GST_FLOW_OK;
GstBaseAudioVisualizer *scope; GstBaseAudioVisualizer *scope;
@ -795,7 +796,7 @@ gst_base_audio_visualizer_chain (GstPad * pad, GstBuffer * buffer)
gboolean (*render) (GstBaseAudioVisualizer * scope, GstBuffer * audio, gboolean (*render) (GstBaseAudioVisualizer * scope, GstBuffer * audio,
GstBuffer * video); 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)); klass = GST_BASE_AUDIO_VISUALIZER_CLASS (G_OBJECT_GET_CLASS (scope));
render = klass->render; render = klass->render;
@ -937,18 +938,17 @@ gst_base_audio_visualizer_chain (GstPad * pad, GstBuffer * buffer)
g_mutex_unlock (scope->config_lock); g_mutex_unlock (scope->config_lock);
beach: beach:
gst_object_unref (scope);
return ret; return ret;
} }
static gboolean 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; gboolean res;
GstBaseAudioVisualizer *scope; GstBaseAudioVisualizer *scope;
scope = GST_BASE_AUDIO_VISUALIZER (gst_pad_get_parent (pad)); scope = GST_BASE_AUDIO_VISUALIZER (parent);
switch (GST_EVENT_TYPE (event)) { switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_QOS: 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); res = gst_pad_push_event (scope->sinkpad, event);
break; break;
} }
gst_object_unref (scope);
return res; return res;
} }
static gboolean 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; gboolean res;
GstBaseAudioVisualizer *scope; GstBaseAudioVisualizer *scope;
scope = GST_BASE_AUDIO_VISUALIZER (gst_pad_get_parent (pad)); scope = GST_BASE_AUDIO_VISUALIZER (parent);
switch (GST_EVENT_TYPE (event)) { switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS: 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); res = gst_pad_push_event (scope->srcpad, event);
break; break;
} }
gst_object_unref (scope);
return res; return res;
} }

View File

@ -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 GstCaps *gst_dvbsub_overlay_getcaps (GstPad * pad, GstCaps * filter);
static GstFlowReturn gst_dvbsub_overlay_chain_video (GstPad * pad, static GstFlowReturn gst_dvbsub_overlay_chain_video (GstPad * pad,
GstBuffer * buf); GstObject * parent, GstBuffer * buf);
static GstFlowReturn gst_dvbsub_overlay_chain_text (GstPad * pad, 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_video (GstPad * pad,
static gboolean gst_dvbsub_overlay_event_text (GstPad * pad, GstEvent * event); GstObject * parent, GstEvent * event);
static gboolean gst_dvbsub_overlay_event_src (GstPad * pad, 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, static void new_dvb_subtitles_cb (DvbSub * dvb_sub, DVBSubtitles * subs,
gpointer user_data); gpointer user_data);
@ -353,9 +356,10 @@ gst_dvbsub_overlay_query_src (GstPad * pad, GstObject * parent,
} }
static gboolean 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; gboolean ret = FALSE;
switch (GST_EVENT_TYPE (event)) { switch (GST_EVENT_TYPE (event)) {
@ -389,8 +393,6 @@ gst_dvbsub_overlay_event_src (GstPad * pad, GstEvent * event)
break; break;
} }
gst_object_unref (render);
return ret; return ret;
} }
@ -740,9 +742,10 @@ new_dvb_subtitles_cb (DvbSub * dvb_sub, DVBSubtitles * subs, gpointer user_data)
} }
static GstFlowReturn 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; GstClockTime sub_running_time;
GST_INFO_OBJECT (overlay, "subpicture/x-dvb buffer with size %u", 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 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; GstFlowReturn ret = GST_FLOW_OK;
gint64 start, stop; gint64 start, stop;
guint64 cstart, cstop; guint64 cstart, cstop;
@ -954,10 +958,11 @@ gst_dvbsub_overlay_query_video (GstPad * pad, GstObject * parent,
} }
static gboolean 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; 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_DEBUG_OBJECT (pad, "received video event %s",
GST_EVENT_TYPE_NAME (event)); GST_EVENT_TYPE_NAME (event));
@ -1004,16 +1009,15 @@ gst_dvbsub_overlay_event_video (GstPad * pad, GstEvent * event)
break; break;
} }
gst_object_unref (render);
return ret; return ret;
} }
static gboolean 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; 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)); 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; break;
} }
gst_object_unref (render);
return ret; return ret;
} }

View File

@ -90,22 +90,27 @@ static void gst_dvd_spu_finalize (GObject * object);
static GstStateChangeReturn gst_dvd_spu_change_state (GstElement * element, static GstStateChangeReturn gst_dvd_spu_change_state (GstElement * element,
GstStateChange transition); 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, static gboolean gst_dvd_spu_src_query (GstPad * pad, GstObject * parent,
GstQuery * query); GstQuery * query);
static GstCaps *gst_dvd_spu_video_proxy_getcaps (GstPad * pad, static GstCaps *gst_dvd_spu_video_proxy_getcaps (GstPad * pad,
GstCaps * filter); GstCaps * filter);
static gboolean gst_dvd_spu_video_set_caps (GstPad * pad, GstCaps * caps); static gboolean gst_dvd_spu_video_set_caps (GstPad * pad, GstCaps * caps);
static GstFlowReturn gst_dvd_spu_video_chain (GstPad * pad, GstBuffer * buf); static GstFlowReturn gst_dvd_spu_video_chain (GstPad * pad, GstObject * parent,
static gboolean gst_dvd_spu_video_event (GstPad * pad, GstEvent * event); 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, static gboolean gst_dvd_spu_video_query (GstPad * pad, GstObject * parent,
GstQuery * query); GstQuery * query);
static void gst_dvd_spu_redraw_still (GstDVDSpu * dvdspu, gboolean force); static void gst_dvd_spu_redraw_still (GstDVDSpu * dvdspu, gboolean force);
static void gst_dvd_spu_check_still_updates (GstDVDSpu * dvdspu); static void gst_dvd_spu_check_still_updates (GstDVDSpu * dvdspu);
static GstFlowReturn gst_dvd_spu_subpic_chain (GstPad * pad, GstBuffer * buf); static GstFlowReturn gst_dvd_spu_subpic_chain (GstPad * pad, GstObject * parent,
static gboolean gst_dvd_spu_subpic_event (GstPad * pad, GstEvent * event); 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 gboolean gst_dvd_spu_subpic_set_caps (GstPad * pad, GstCaps * caps);
static void gst_dvd_spu_clear (GstDVDSpu * dvdspu); 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 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; GstPad *peer;
gboolean res = TRUE; gboolean res = TRUE;
@ -284,8 +289,6 @@ gst_dvd_spu_src_event (GstPad * pad, GstEvent * event)
res = gst_pad_send_event (peer, event); res = gst_pad_send_event (peer, event);
gst_object_unref (peer); gst_object_unref (peer);
} }
gst_object_unref (dvdspu);
return res; return res;
} }
@ -372,14 +375,12 @@ gst_dvd_spu_video_proxy_getcaps (GstPad * pad, GstCaps * filter)
} }
static gboolean 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; SpuState *state = &dvdspu->spu_state;
gboolean res = TRUE; gboolean res = TRUE;
g_return_val_if_fail (dvdspu != NULL, FALSE);
switch (GST_EVENT_TYPE (event)) { switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_CAPS: case GST_EVENT_CAPS:
{ {
@ -399,7 +400,7 @@ gst_dvd_spu_video_event (GstPad * pad, GstEvent * event)
GstBuffer *to_push = NULL; GstBuffer *to_push = NULL;
/* Forward the event before handling */ /* Forward the event before handling */
res = gst_pad_event_default (pad, event); res = gst_pad_event_default (pad, parent, event);
GST_DEBUG_OBJECT (dvdspu, GST_DEBUG_OBJECT (dvdspu,
"Still frame event on video pad: in-still = %d", in_still); "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 { } else {
GST_DEBUG_OBJECT (dvdspu, GST_DEBUG_OBJECT (dvdspu,
"Custom event %" GST_PTR_FORMAT " on video pad", event); "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; break;
} }
@ -465,14 +466,14 @@ gst_dvd_spu_video_event (GstPad * pad, GstEvent * event)
dvdspu->video_seg = seg; dvdspu->video_seg = seg;
DVD_SPU_UNLOCK (dvdspu); DVD_SPU_UNLOCK (dvdspu);
res = gst_pad_event_default (pad, event); res = gst_pad_event_default (pad, parent, event);
break; break;
} }
case GST_EVENT_FLUSH_START: case GST_EVENT_FLUSH_START:
res = gst_pad_event_default (pad, event); res = gst_pad_event_default (pad, parent, event);
goto done; goto done;
case GST_EVENT_FLUSH_STOP: case GST_EVENT_FLUSH_STOP:
res = gst_pad_event_default (pad, event); res = gst_pad_event_default (pad, parent, event);
DVD_SPU_LOCK (dvdspu); DVD_SPU_LOCK (dvdspu);
gst_segment_init (&dvdspu->video_seg, GST_FORMAT_UNDEFINED); 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); DVD_SPU_UNLOCK (dvdspu);
goto done; goto done;
default: default:
res = gst_pad_event_default (pad, event); res = gst_pad_event_default (pad, parent, event);
break; break;
} }
done: done:
gst_object_unref (dvdspu);
return res; return res;
#if 0 #if 0
error: error:
@ -522,9 +522,9 @@ gst_dvd_spu_video_query (GstPad * pad, GstObject * parent, GstQuery * query)
} }
static GstFlowReturn 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; GstFlowReturn ret;
g_return_val_if_fail (dvdspu != NULL, GST_FLOW_ERROR); 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); ret = dvdspu_handle_vid_buffer (dvdspu, buf);
gst_object_unref (dvdspu);
return ret; return ret;
} }
@ -879,9 +877,9 @@ submit_new_spu_packet (GstDVDSpu * dvdspu, GstBuffer * buf)
} }
static GstFlowReturn 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; GstFlowReturn ret = GST_FLOW_OK;
gsize size; gsize size;
@ -1000,23 +998,25 @@ gst_dvd_spu_subpic_chain (GstPad * pad, GstBuffer * buf)
done: done:
DVD_SPU_UNLOCK (dvdspu); DVD_SPU_UNLOCK (dvdspu);
gst_object_unref (dvdspu);
return ret; return ret;
/* ERRORS */
caps_not_set: caps_not_set:
GST_ELEMENT_ERROR (dvdspu, RESOURCE, NO_SPACE_LEFT, {
(_("Subpicture format was not configured before data flow")), (NULL)); GST_ELEMENT_ERROR (dvdspu, RESOURCE, NO_SPACE_LEFT,
ret = GST_FLOW_ERROR; (_("Subpicture format was not configured before data flow")), (NULL));
goto done; ret = GST_FLOW_ERROR;
goto done;
}
} }
static gboolean 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; gboolean res = TRUE;
g_return_val_if_fail (dvdspu != NULL, FALSE);
/* Some events on the subpicture sink pad just get ignored, like /* Some events on the subpicture sink pad just get ignored, like
* FLUSH_START */ * FLUSH_START */
switch (GST_EVENT_TYPE (event)) { switch (GST_EVENT_TYPE (event)) {
@ -1036,7 +1036,7 @@ gst_dvd_spu_subpic_event (GstPad * pad, GstEvent * event)
gboolean need_push; gboolean need_push;
if (!gst_structure_has_name (structure, "application/x-gst-dvd")) { 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; break;
} }
@ -1126,12 +1126,11 @@ gst_dvd_spu_subpic_event (GstPad * pad, GstEvent * event)
goto done; goto done;
break; break;
default: default:
res = gst_pad_event_default (pad, event); res = gst_pad_event_default (pad, parent, event);
break; break;
} }
done: done:
gst_object_unref (dvdspu);
return res; return res;
} }

View File

@ -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 (GstPad * pad);
static gboolean mpegts_base_sink_activate_pull (GstPad * pad, gboolean active); static gboolean mpegts_base_sink_activate_pull (GstPad * pad, gboolean active);
static gboolean mpegts_base_sink_activate_push (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 GstFlowReturn mpegts_base_chain (GstPad * pad, GstObject * parent,
static gboolean mpegts_base_sink_event (GstPad * pad, GstEvent * event); GstBuffer * buf);
static gboolean mpegts_base_sink_event (GstPad * pad, GstObject * parent,
GstEvent * event);
static GstStateChangeReturn mpegts_base_change_state (GstElement * element, static GstStateChangeReturn mpegts_base_change_state (GstElement * element,
GstStateChange transition); GstStateChange transition);
@ -1183,10 +1185,10 @@ mpegts_base_flush (MpegTSBase * base)
} }
static gboolean static gboolean
mpegts_base_sink_event (GstPad * pad, GstEvent * event) mpegts_base_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{ {
gboolean res = TRUE; 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_WARNING_OBJECT (base, "Got event %s",
gst_event_type_get_name (GST_EVENT_TYPE (event))); 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); res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event);
gst_event_unref (event); gst_event_unref (event);
} }
gst_object_unref (base);
return res; return res;
} }
@ -1242,7 +1242,7 @@ mpegts_base_push (MpegTSBase * base, MpegTSPacketizerPacket * packet,
} }
static GstFlowReturn static GstFlowReturn
mpegts_base_chain (GstPad * pad, GstBuffer * buf) mpegts_base_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
{ {
GstFlowReturn res = GST_FLOW_OK; GstFlowReturn res = GST_FLOW_OK;
MpegTSBase *base; MpegTSBase *base;
@ -1251,7 +1251,7 @@ mpegts_base_chain (GstPad * pad, GstBuffer * buf)
MpegTSPacketizer2 *packetizer; MpegTSPacketizer2 *packetizer;
MpegTSPacketizerPacket packet; MpegTSPacketizerPacket packet;
base = GST_MPEGTS_BASE (gst_object_get_parent (GST_OBJECT (pad))); base = GST_MPEGTS_BASE (parent);
packetizer = base->packetizer; packetizer = base->packetizer;
if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (base->first_buf_ts)) && 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); mpegts_packetizer_clear_packet (base->packetizer, &packet);
} }
gst_object_unref (base);
return res; return res;
} }
@ -1373,6 +1372,7 @@ static void
mpegts_base_loop (MpegTSBase * base) mpegts_base_loop (MpegTSBase * base)
{ {
GstFlowReturn ret = GST_FLOW_ERROR; GstFlowReturn ret = GST_FLOW_ERROR;
switch (base->mode) { switch (base->mode) {
case BASE_MODE_SCANNING: case BASE_MODE_SCANNING:
/* Find first sync point */ /* Find first sync point */
@ -1397,7 +1397,7 @@ mpegts_base_loop (MpegTSBase * base)
if (G_UNLIKELY (ret != GST_FLOW_OK)) if (G_UNLIKELY (ret != GST_FLOW_OK))
goto error; goto error;
base->seek_offset += gst_buffer_get_size (buf); 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)) if (G_UNLIKELY (ret != GST_FLOW_OK))
goto error; goto error;
} }

View File

@ -855,10 +855,10 @@ done:
} }
static gboolean 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; 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_DEBUG_OBJECT (pad, "Got event %s",
gst_event_type_get_name (GST_EVENT_TYPE (event))); 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); gst_event_unref (event);
break; break;
default: default:
res = gst_pad_event_default (pad, event); res = gst_pad_event_default (pad, parent, event);
} }
gst_object_unref (demux);
return res; return res;
} }

View File

@ -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, static void gst_sdp_demux_stream_push_event (GstSDPDemux * demux,
GstSDPStream * stream, GstEvent * event); GstSDPStream * stream, GstEvent * event);
static gboolean gst_sdp_demux_sink_event (GstPad * pad, GstEvent * event); static gboolean gst_sdp_demux_sink_event (GstPad * pad, GstObject * parent,
static GstFlowReturn gst_sdp_demux_sink_chain (GstPad * pad, GstEvent * event);
static GstFlowReturn gst_sdp_demux_sink_chain (GstPad * pad, GstObject * parent,
GstBuffer * buffer); GstBuffer * buffer);
/*static guint gst_sdp_demux_signals[LAST_SIGNAL] = { 0 }; */ /*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) { for (ai = res; !ret && ai; ai = ai->ai_next) {
if (ai->ai_family == AF_INET) if (ai->ai_family == AF_INET)
ret = ret =
IN_MULTICAST (ntohl (((struct sockaddr_in *) ai->ai_addr)-> IN_MULTICAST (ntohl (((struct sockaddr_in *) ai->ai_addr)->sin_addr.
sin_addr.s_addr)); s_addr));
else else
ret = ret =
IN6_IS_ADDR_MULTICAST (&((struct sockaddr_in6 *) ai-> IN6_IS_ADDR_MULTICAST (&((struct sockaddr_in6 *) ai->ai_addr)->
ai_addr)->sin6_addr); sin6_addr);
} }
freeaddrinfo (res); freeaddrinfo (res);
@ -1471,12 +1472,12 @@ start_session_failure:
} }
static gboolean static gboolean
gst_sdp_demux_sink_event (GstPad * pad, GstEvent * event) gst_sdp_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{ {
GstSDPDemux *demux; GstSDPDemux *demux;
gboolean res = TRUE; gboolean res = TRUE;
demux = GST_SDP_DEMUX (gst_pad_get_parent (pad)); demux = GST_SDP_DEMUX (parent);
switch (GST_EVENT_TYPE (event)) { switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS: case GST_EVENT_EOS:
@ -1488,24 +1489,21 @@ gst_sdp_demux_sink_event (GstPad * pad, GstEvent * event)
gst_event_unref (event); gst_event_unref (event);
break; break;
} }
gst_object_unref (demux);
return res; return res;
} }
static GstFlowReturn static GstFlowReturn
gst_sdp_demux_sink_chain (GstPad * pad, GstBuffer * buffer) gst_sdp_demux_sink_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{ {
GstSDPDemux *demux; 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 /* push the SDP message in an adapter, we start doing something with it when
* we receive EOS */ * we receive EOS */
gst_adapter_push (demux->adapter, buffer); gst_adapter_push (demux->adapter, buffer);
gst_object_unref (demux);
return GST_FLOW_OK; return GST_FLOW_OK;
} }

View File

@ -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_dispose (GObject * object);
static void gst_y4m_dec_finalize (GObject * object); static void gst_y4m_dec_finalize (GObject * object);
static GstFlowReturn gst_y4m_dec_chain (GstPad * pad, GstBuffer * buffer); static GstFlowReturn gst_y4m_dec_chain (GstPad * pad, GstObject * parent,
static gboolean gst_y4m_dec_sink_event (GstPad * pad, GstEvent * event); 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, static gboolean gst_y4m_dec_src_query (GstPad * pad, GstObject * parent,
GstQuery * query); GstQuery * query);
@ -415,7 +418,7 @@ error:
} }
static GstFlowReturn static GstFlowReturn
gst_y4m_dec_chain (GstPad * pad, GstBuffer * buffer) gst_y4m_dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{ {
GstY4mDec *y4mdec; GstY4mDec *y4mdec;
int n_avail; int n_avail;
@ -425,7 +428,7 @@ gst_y4m_dec_chain (GstPad * pad, GstBuffer * buffer)
int i; int i;
int len; int len;
y4mdec = GST_Y4M_DEC (gst_pad_get_parent (pad)); y4mdec = GST_Y4M_DEC (parent);
GST_DEBUG_OBJECT (y4mdec, "chain"); GST_DEBUG_OBJECT (y4mdec, "chain");
@ -545,18 +548,18 @@ gst_y4m_dec_chain (GstPad * pad, GstBuffer * buffer)
break; break;
} }
gst_object_unref (y4mdec);
GST_DEBUG ("returning %d", flow_ret); GST_DEBUG ("returning %d", flow_ret);
return flow_ret; return flow_ret;
} }
static gboolean static gboolean
gst_y4m_dec_sink_event (GstPad * pad, GstEvent * event) gst_y4m_dec_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{ {
gboolean res; gboolean res;
GstY4mDec *y4mdec; GstY4mDec *y4mdec;
y4mdec = GST_Y4M_DEC (gst_pad_get_parent (pad)); y4mdec = GST_Y4M_DEC (parent);
GST_DEBUG_OBJECT (y4mdec, "event"); GST_DEBUG_OBJECT (y4mdec, "event");
@ -592,17 +595,16 @@ gst_y4m_dec_sink_event (GstPad * pad, GstEvent * event)
break; break;
} }
gst_object_unref (y4mdec);
return res; return res;
} }
static gboolean static gboolean
gst_y4m_dec_src_event (GstPad * pad, GstEvent * event) gst_y4m_dec_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
{ {
gboolean res; gboolean res;
GstY4mDec *y4mdec; GstY4mDec *y4mdec;
y4mdec = GST_Y4M_DEC (gst_pad_get_parent (pad)); y4mdec = GST_Y4M_DEC (parent);
GST_DEBUG_OBJECT (y4mdec, "event"); GST_DEBUG_OBJECT (y4mdec, "event");
@ -643,7 +645,6 @@ gst_y4m_dec_src_event (GstPad * pad, GstEvent * event)
break; break;
} }
gst_object_unref (y4mdec);
return res; return res;
} }