summaryrefslogtreecommitdiffstats
path: root/gst/wavparse/gstwavparse.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/wavparse/gstwavparse.c')
-rw-r--r--gst/wavparse/gstwavparse.c32
1 files changed, 26 insertions, 6 deletions
diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
index 19a7697d..af081a0e 100644
--- a/gst/wavparse/gstwavparse.c
+++ b/gst/wavparse/gstwavparse.c
@@ -1163,32 +1163,52 @@ gst_wavparse_pad_query (GstPad * pad, GstQuery * query)
switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_POSITION:
{
- gint64 curb, endb;
- gint64 cur, end;
+ gint64 curb;
+ gint64 cur;
GstFormat format;
gboolean res = TRUE;
curb = wav->offset - wav->datastart;
- endb = wav->datasize;
- gst_query_parse_position (query, &format, NULL, NULL);
+ gst_query_parse_position (query, &format, NULL);
switch (format) {
case GST_FORMAT_TIME:
res &=
gst_wavparse_pad_convert (pad, GST_FORMAT_BYTES, curb,
&format, &cur);
+ break;
+ default:
+ format = GST_FORMAT_BYTES;
+ cur = curb;
+ break;
+ }
+ if (res)
+ gst_query_set_position (query, format, cur);
+ break;
+ }
+ case GST_QUERY_DURATION:
+ {
+ gint64 endb;
+ gint64 end;
+ GstFormat format;
+ gboolean res = TRUE;
+
+ endb = wav->datasize;
+ gst_query_parse_duration (query, &format, NULL);
+
+ switch (format) {
+ case GST_FORMAT_TIME:
res &=
gst_wavparse_pad_convert (pad, GST_FORMAT_BYTES, endb,
&format, &end);
break;
default:
format = GST_FORMAT_BYTES;
- cur = curb;
end = endb;
break;
}
if (res)
- gst_query_set_position (query, format, cur, end);
+ gst_query_set_duration (query, format, end);
break;
}
case GST_QUERY_CONVERT: