From b7e4ff666a08c1681a2ed2471f69a5db16530260 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Sun, 25 May 2008 21:48:39 +0000 Subject: [PATCH] ext/ffmpeg/gstffmpegdemux.c: Implement SEEKING query, so players such as totem can query seekability. Fix a comment t... Original commit message from CVS: * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_src_query_list), (gst_ffmpegdemux_src_query), (gst_ffmpegdemux_get_stream), (gst_ffmpegdemux_open): Implement SEEKING query, so players such as totem can query seekability. Fix a comment typo or two. --- ChangeLog | 8 ++++++++ ext/ffmpeg/gstffmpegdemux.c | 21 +++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 33838f1f4a..8b7e859acd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-05-25 Tim-Philipp Müller + + * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_src_query_list), + (gst_ffmpegdemux_src_query), (gst_ffmpegdemux_get_stream), + (gst_ffmpegdemux_open): + Implement SEEKING query, so players such as totem can query + seekability. Fix a comment typo or two. + 2008-05-25 Jan Schmidt * configure.ac: diff --git a/ext/ffmpeg/gstffmpegdemux.c b/ext/ffmpeg/gstffmpegdemux.c index c90fcd32d2..061d62ac41 100644 --- a/ext/ffmpeg/gstffmpegdemux.c +++ b/ext/ffmpeg/gstffmpegdemux.c @@ -613,6 +613,7 @@ gst_ffmpegdemux_src_query_list (GstPad * pad) static const GstQueryType src_types[] = { GST_QUERY_DURATION, GST_QUERY_POSITION, + GST_QUERY_SEEKING, 0 }; @@ -736,6 +737,22 @@ gst_ffmpegdemux_src_query (GstPad * pad, GstQuery * query) } } break; + case GST_QUERY_SEEKING: { + GstFormat format; + gboolean seekable; + gint64 dur = -1; + + gst_query_parse_seeking (query, &format, NULL, NULL, NULL); + seekable = demux->seekable; + if (!gst_pad_query_duration (pad, &format, &dur)) { + /* unlikely that we don't know duration but can seek */ + seekable = FALSE; + dur = -1; + } + gst_query_set_seeking (query, format, seekable, 0, dur); + res = TRUE; + break; + } default: /* FIXME : ADD GST_QUERY_CONVERT */ res = gst_pad_query_default (pad, query); @@ -894,7 +911,7 @@ gst_ffmpegdemux_get_stream (GstFFMpegDemux * demux, AVStream * avstream) stream->pad = pad; gst_pad_set_element_private (pad, stream); - /* transform some usefull info to GstClockTime and remember */ + /* transform some useful info to GstClockTime and remember */ { GstClockTime tmp; @@ -1063,7 +1080,7 @@ gst_ffmpegdemux_open (GstFFMpegDemux * demux) gst_message_new_tag (GST_OBJECT (demux), tags)); } - /* transform some usefull info to GstClockTime and remember */ + /* transform some useful info to GstClockTime and remember */ demux->start_time = gst_util_uint64_scale_int (demux->context->start_time, GST_SECOND, AV_TIME_BASE); GST_DEBUG_OBJECT (demux, "start time: %" GST_TIME_FORMAT,