From d7294ac13e78a6d14fe281709c30136b47354097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Thu, 11 Jan 2007 12:28:56 +0000 Subject: gst/mve/gstmvedemux.c: Support SEEKING query (bad news now delivered properly!); add event function to source pads to... Original commit message from CVS: * gst/mve/gstmvedemux.c: (gst_mve_demux_get_src_query_types), (gst_mve_demux_handle_src_query), (gst_mve_demux_handle_src_event), (gst_mve_add_stream): Support SEEKING query (bad news now delivered properly!); add event function to source pads to make sure seeks aren't propagated upstream, even if they aren't handled. --- ChangeLog | 9 +++++++++ gst/mve/gstmvedemux.c | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/ChangeLog b/ChangeLog index 626561b3..f6bd0b61 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2007-01-11 Tim-Philipp Müller + + * gst/mve/gstmvedemux.c: (gst_mve_demux_get_src_query_types), + (gst_mve_demux_handle_src_query), (gst_mve_demux_handle_src_event), + (gst_mve_add_stream): + Support SEEKING query (bad news now delivered properly!); add event + function to source pads to make sure seeks aren't propagated + upstream, even if they aren't handled. + 2007-01-11 Tim-Philipp Müller Patch by: Jens Granseuer diff --git a/gst/mve/gstmvedemux.c b/gst/mve/gstmvedemux.c index 767e730d..01ccfe5b 100644 --- a/gst/mve/gstmvedemux.c +++ b/gst/mve/gstmvedemux.c @@ -147,6 +147,7 @@ gst_mve_demux_get_src_query_types (GstPad * pad) { static const GstQueryType src_types[] = { GST_QUERY_POSITION, + GST_QUERY_SEEKING, 0 }; @@ -177,6 +178,21 @@ gst_mve_demux_handle_src_query (GstPad * pad, GstQuery * query) } break; } + case GST_QUERY_SEEKING:{ + GstFormat format; + + gst_query_parse_seeking (query, &format, NULL, NULL, NULL); + if (format == GST_FORMAT_TIME) { + gst_query_set_seeking (query, GST_FORMAT_TIME, FALSE, 0, -1); + res = TRUE; + } + break; + } + case GST_QUERY_DURATION:{ + /* FIXME: really should implement/estimate this somehow */ + res = FALSE; + break; + } default: res = gst_pad_query_default (pad, query); break; @@ -185,6 +201,25 @@ gst_mve_demux_handle_src_query (GstPad * pad, GstQuery * query) return res; } +static gboolean +gst_mve_demux_handle_src_event (GstPad * pad, GstEvent * event) +{ + gboolean res; + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_SEEK: + GST_DEBUG ("seeking not supported"); + res = FALSE; + break; + default: + res = gst_pad_event_default (pad, event); + break; + } + + return res; +} + + static GstStateChangeReturn gst_mve_demux_change_state (GstElement * element, GstStateChange transition) { @@ -230,6 +265,8 @@ gst_mve_add_stream (GstMveDemux * mve, GstMveDemuxStream * stream, GST_DEBUG_FUNCPTR (gst_mve_demux_get_src_query_types)); gst_pad_set_query_function (stream->pad, GST_DEBUG_FUNCPTR (gst_mve_demux_handle_src_query)); + gst_pad_set_event_function (stream->pad, + GST_DEBUG_FUNCPTR (gst_mve_demux_handle_src_event)); gst_pad_set_element_private (stream->pad, stream); GST_DEBUG_OBJECT (mve, "adding pad %s", GST_PAD_NAME (stream->pad)); -- cgit v1.2.1