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_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;
}

View file

@ -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;
}

View file

@ -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",

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,
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;
}

View file

@ -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;
}

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 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;
}

View file

@ -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;
}

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_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;
}

View file

@ -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;
}

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,
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;
}

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_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;
}