diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2011-11-16 17:28:10 +0100 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2011-11-16 17:30:38 +0100 |
commit | 6d92ecac757a4e0a9f9f63805b43e26a92bb4160 (patch) | |
tree | ba958cd2fae6477ca9875138ff1516c9848a25d8 /gst/y4m | |
parent | 3c993f1c4afc4c874108404158afdafac3ad0d99 (diff) | |
download | gstreamer-plugins-bad-6d92ecac757a4e0a9f9f63805b43e26a92bb4160.tar.gz |
add parent to query function
Diffstat (limited to 'gst/y4m')
-rw-r--r-- | gst/y4m/gsty4mdec.c | 45 |
1 files changed, 20 insertions, 25 deletions
diff --git a/gst/y4m/gsty4mdec.c b/gst/y4m/gsty4mdec.c index c61e34ebc..f39632227 100644 --- a/gst/y4m/gsty4mdec.c +++ b/gst/y4m/gsty4mdec.c @@ -59,7 +59,8 @@ static GstFlowReturn gst_y4m_dec_chain (GstPad * pad, GstBuffer * buffer); static gboolean gst_y4m_dec_sink_event (GstPad * pad, GstEvent * event); static gboolean gst_y4m_dec_src_event (GstPad * pad, GstEvent * event); -static gboolean gst_y4m_dec_src_query (GstPad * pad, GstQuery * query); +static gboolean gst_y4m_dec_src_query (GstPad * pad, GstObject * parent, + GstQuery * query); static GstStateChangeReturn gst_y4m_dec_change_state (GstElement * element, GstStateChange transition); @@ -647,16 +648,16 @@ gst_y4m_dec_src_event (GstPad * pad, GstEvent * event) } static gboolean -gst_y4m_dec_src_query (GstPad * pad, GstQuery * query) +gst_y4m_dec_src_query (GstPad * pad, GstObject * parent, GstQuery * query) { - GstY4mDec *y4mdec = GST_Y4M_DEC (gst_pad_get_parent (pad)); + GstY4mDec *y4mdec = GST_Y4M_DEC (parent); gboolean res = FALSE; switch (GST_QUERY_TYPE (query)) { case GST_QUERY_DURATION: { GstFormat format; - GstPad *peer; + GstQuery *peer_query; GST_DEBUG ("duration query"); @@ -669,39 +670,33 @@ gst_y4m_dec_src_query (GstPad * pad, GstQuery * query) break; } - peer = gst_pad_get_peer (y4mdec->sinkpad); - if (peer) { - GstQuery *peer_query = gst_query_new_duration (GST_FORMAT_BYTES); + peer_query = gst_query_new_duration (GST_FORMAT_BYTES); - res = gst_pad_query (peer, peer_query); - if (res) { - gint64 duration; - int n_frames; + res = gst_pad_peer_query (y4mdec->sinkpad, peer_query); + if (res) { + gint64 duration; + int n_frames; - gst_query_parse_duration (peer_query, &format, &duration); + gst_query_parse_duration (peer_query, &format, &duration); - n_frames = gst_y4m_dec_bytes_to_frames (y4mdec, duration); - GST_DEBUG ("duration in frames %d", n_frames); + n_frames = gst_y4m_dec_bytes_to_frames (y4mdec, duration); + GST_DEBUG ("duration in frames %d", n_frames); - duration = gst_y4m_dec_frames_to_timestamp (y4mdec, n_frames); - GST_DEBUG ("duration in time %" GST_TIME_FORMAT, - GST_TIME_ARGS (duration)); + duration = gst_y4m_dec_frames_to_timestamp (y4mdec, n_frames); + GST_DEBUG ("duration in time %" GST_TIME_FORMAT, + GST_TIME_ARGS (duration)); - gst_query_set_duration (query, GST_FORMAT_TIME, duration); - res = TRUE; - } - - gst_query_unref (peer_query); - gst_object_unref (peer); + gst_query_set_duration (query, GST_FORMAT_TIME, duration); + res = TRUE; } + gst_query_unref (peer_query); break; } default: - res = gst_pad_query_default (pad, query); + res = gst_pad_query_default (pad, parent, query); break; } - gst_object_unref (y4mdec); return res; } |