From 0f644988435a98b7f691616cb7f542c76a90c9fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 25 Jan 2007 23:27:59 +0000 Subject: [PATCH] ext/wavpack/gstwavpackparse.c: Fix the SEEKING query. We can seek if we are in pull mode, not the other way around. A... Original commit message from CVS: * ext/wavpack/gstwavpackparse.c: (gst_wavpack_parse_src_query): Fix the SEEKING query. We can seek if we are in pull mode, not the other way around. Also set the correct format in the seeking query and handle the case where the headers are not read yet and we can't say anything about our seeking capabilities. --- ChangeLog | 8 ++++++++ ext/wavpack/gstwavpackparse.c | 9 ++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0752f1330e..15e08d6f99 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-01-25 Sebastian Dröge + + * ext/wavpack/gstwavpackparse.c: (gst_wavpack_parse_src_query): + Fix the SEEKING query. We can seek if we are in pull mode, not the + other way around. Also set the correct format in the seeking query and + handle the case where the headers are not read yet and we can't say + anything about our seeking capabilities. + 2007-01-25 Sebastian Dröge * ext/wavpack/gstwavpackdec.c: (gst_wavpack_dec_base_init): diff --git a/ext/wavpack/gstwavpackparse.c b/ext/wavpack/gstwavpackparse.c index 47f6cd54ab..ed1de71444 100644 --- a/ext/wavpack/gstwavpackparse.c +++ b/ext/wavpack/gstwavpackparse.c @@ -343,14 +343,17 @@ gst_wavpack_parse_src_query (GstPad * pad, GstQuery * query) gboolean seekable; gint64 duration = -1; - gst_pad_query_duration (pad, &format, &duration); + /* only fails if we didn't read the headers yet and can't say + * anything about our seeking capabilities */ + if (!gst_pad_query_duration (pad, &format, &duration)) + break; /* can't seek in streaming mode yet */ GST_OBJECT_LOCK (parse); - seekable = (parse->adapter != NULL); + seekable = (parse->adapter == NULL); GST_OBJECT_UNLOCK (parse); - gst_query_set_seeking (query, GST_FORMAT_TIME, seekable, 0, duration); + gst_query_set_seeking (query, format, seekable, 0, duration); ret = TRUE; } break;