API change fix.
authorWim Taymans <wim.taymans@gmail.com>
Wed, 19 Oct 2005 15:57:04 +0000 (15:57 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Wed, 19 Oct 2005 15:57:04 +0000 (15:57 +0000)
Original commit message from CVS:
* ext/dv/gstdvdemux.c: (gst_dvdemux_get_src_query_types),
(gst_dvdemux_src_query):
* ext/flac/gstflacdec.c: (gst_flacdec_length),
(gst_flacdec_src_query):
* ext/raw1394/gstdv1394src.c: (gst_dv1394src_query):
* ext/speex/gstspeexdec.c: (speex_dec_src_query):
* gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_query):
* gst/debug/gstnavseek.c: (gst_navseek_seek):
* gst/debug/progressreport.c: (gst_progress_report_report):
* gst/matroska/ebml-read.c: (gst_ebml_read_get_length):
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_handle_src_query):
* gst/matroska/matroska-mux.c: (gst_matroska_mux_start):
* gst/wavparse/gstwavparse.c: (gst_wavparse_handle_seek),
(gst_wavparse_stream_headers), (gst_wavparse_stream_data),
(gst_wavparse_pad_convert), (gst_wavparse_pad_query),
(gst_wavparse_srcpad_event):
API change fix.

12 files changed:
ChangeLog
ext/dv/gstdvdemux.c
ext/flac/gstflacdec.c
ext/raw1394/gstdv1394src.c
ext/speex/gstspeexdec.c
gst/avi/gstavidemux.c
gst/debug/gstnavseek.c
gst/debug/progressreport.c
gst/matroska/ebml-read.c
gst/matroska/matroska-demux.c
gst/matroska/matroska-mux.c
gst/wavparse/gstwavparse.c

index 6acd271..c3f66ee 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2005-10-19  Wim Taymans  <wim@fluendo.com>
+
+       * ext/dv/gstdvdemux.c: (gst_dvdemux_get_src_query_types),
+       (gst_dvdemux_src_query):
+       * ext/flac/gstflacdec.c: (gst_flacdec_length),
+       (gst_flacdec_src_query):
+       * ext/raw1394/gstdv1394src.c: (gst_dv1394src_query):
+       * ext/speex/gstspeexdec.c: (speex_dec_src_query):
+       * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_query):
+       * gst/debug/gstnavseek.c: (gst_navseek_seek):
+       * gst/debug/progressreport.c: (gst_progress_report_report):
+       * gst/matroska/ebml-read.c: (gst_ebml_read_get_length):
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_handle_src_query):
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_start):
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_handle_seek),
+       (gst_wavparse_stream_headers), (gst_wavparse_stream_data),
+       (gst_wavparse_pad_convert), (gst_wavparse_pad_query),
+       (gst_wavparse_srcpad_event):
+       API change fix.
+
 2005-10-19  Tim-Philipp Müller  <tim at centricular dot net>
 
        * gst/goom/filters.c:
index d6fefe5..9e6e205 100644 (file)
@@ -413,6 +413,7 @@ gst_dvdemux_get_src_query_types (GstPad * pad)
 {
   static const GstQueryType src_query_types[] = {
     GST_QUERY_POSITION,
+    GST_QUERY_DURATION,
     GST_QUERY_CONVERT,
     0
   };
@@ -432,15 +433,30 @@ gst_dvdemux_src_query (GstPad * pad, GstQuery * query)
     case GST_QUERY_POSITION:
     {
       GstFormat format;
+      gint64 cur;
+
+      /* get target format */
+      gst_query_parse_position (query, &format, NULL);
+
+      /* bring the position to the requested format. */
+      if (!(res = gst_pad_query_convert (pad,
+                  GST_FORMAT_TIME, dvdemux->timestamp, &format, &cur)))
+        goto error;
+      gst_query_set_position (query, format, cur);
+      break;
+    }
+    case GST_QUERY_DURATION:
+    {
+      GstFormat format;
       GstFormat format2;
-      gint64 cur, end;
+      gint64 end;
       GstPad *peer;
 
       /* get target format */
-      gst_query_parse_position (query, &format, NULL, NULL);
+      gst_query_parse_duration (query, &format, NULL);
 
-      /* change query to perform on peer */
-      gst_query_set_position (query, GST_FORMAT_BYTES, -1, -1);
+      /* change query to bytes to perform on peer */
+      gst_query_set_duration (query, GST_FORMAT_BYTES, -1);
 
       if ((peer = gst_pad_get_peer (dvdemux->sinkpad))) {
         /* ask peer for total length */
@@ -450,28 +466,22 @@ gst_dvdemux_src_query (GstPad * pad, GstQuery * query)
         }
 
         /* get peer total length */
-        gst_query_parse_position (query, NULL, NULL, &end);
+        gst_query_parse_duration (query, NULL, &end);
+
+        gst_object_unref (peer);
 
         /* convert end to requested format */
         if (end != -1) {
           format2 = format;
           if (!(res = gst_pad_query_convert (dvdemux->sinkpad,
                       GST_FORMAT_BYTES, end, &format2, &end))) {
-            gst_object_unref (peer);
             goto error;
           }
         }
-        gst_object_unref (peer);
       } else {
         end = -1;
       }
-      /* bring the position to the requested format. */
-      if (!(res = gst_pad_query_convert (pad,
-                  GST_FORMAT_TIME, dvdemux->timestamp, &format, &cur)))
-        goto error;
-      if (!(res = gst_pad_query_convert (pad, format2, end, &format, &end)))
-        goto error;
-      gst_query_set_position (query, format, cur, end);
+      gst_query_set_duration (query, format, end);
       break;
     }
     case GST_QUERY_CONVERT:
index 3079c88..c609e2e 100644 (file)
@@ -359,7 +359,7 @@ gst_flacdec_length (const FLAC__SeekableStreamDecoder * decoder,
 
   if (!(peer = gst_pad_get_peer (flacdec->sinkpad)))
     return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR;
-  gst_pad_query_position (peer, &fmt, NULL, &len);
+  gst_pad_query_duration (peer, &fmt, &len);
   gst_object_unref (peer);
   if (fmt != GST_FORMAT_BYTES || len == -1)
     return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR;
@@ -706,20 +706,30 @@ gst_flacdec_src_query (GstPad * pad, GstQuery * query)
 
   switch (GST_QUERY_TYPE (query)) {
     case GST_QUERY_POSITION:{
-      gint64 len, pos;
+      gint64 pos;
+      GstFormat fmt = GST_FORMAT_TIME;
+
+      pos = flacdec->total_samples;
+
+      if (gst_flacdec_convert_src (flacdec->srcpad,
+              GST_FORMAT_DEFAULT, pos, &fmt, &pos))
+        gst_query_set_position (query, GST_FORMAT_TIME, pos);
+      else
+        res = FALSE;
+      break;
+    }
+    case GST_QUERY_DURATION:{
+      gint64 len;
       GstFormat fmt = GST_FORMAT_TIME;
 
       if (flacdec->stream_samples == 0)
         len = flacdec->total_samples;
       else
         len = flacdec->stream_samples;
-      pos = flacdec->total_samples;
 
       if (gst_flacdec_convert_src (flacdec->srcpad,
-              GST_FORMAT_DEFAULT, len, &fmt, &len) &&
-          gst_flacdec_convert_src (flacdec->srcpad,
-              GST_FORMAT_DEFAULT, pos, &fmt, &pos))
-        gst_query_set_position (query, GST_FORMAT_TIME, pos, len);
+              GST_FORMAT_DEFAULT, len, &fmt, &len))
+        gst_query_set_duration (query, GST_FORMAT_TIME, len);
       else
         res = FALSE;
       break;
index e39bb19..30ea617 100644 (file)
@@ -789,13 +789,13 @@ gst_dv1394src_query (GstPad * pad, GstQuery * query)
       GstFormat format;
       gint64 current;
 
-      gst_query_parse_position (query, &format, NULL, NULL);
+      gst_query_parse_position (query, &format, NULL);
 
       /* bring our current frame to the requested format */
       res = gst_pad_query_convert (pad,
           GST_FORMAT_DEFAULT, src->frame_sequence, &format, &current);
 
-      gst_query_set_position (query, format, current, -1);
+      gst_query_set_position (query, format, current);
       break;
     }
     case GST_QUERY_CONVERT:
index adf0079..c495cf1 100644 (file)
@@ -211,23 +211,44 @@ speex_dec_convert (GstPad * pad,
 static gboolean
 speex_dec_src_query (GstPad * pad, GstQuery * query)
 {
-  gint64 samples_out = 0, total_samples;
   GstSpeexDec *dec = GST_SPEEXDEC (GST_OBJECT_PARENT (pad));
-  GstFormat my_format = GST_FORMAT_TIME;
-  GstPad *peer;
 
-  if (GST_QUERY_TYPE (query) != GST_QUERY_POSITION)
-    return FALSE;
-  if (!(peer = gst_pad_get_peer (dec->sinkpad)))
-    return FALSE;
-  gst_pad_query_position (peer, &my_format, NULL, &total_samples);
-  gst_object_unref (peer);
-  samples_out = dec->samples_out;
-  speex_dec_convert (dec->srcpad, GST_FORMAT_DEFAULT, samples_out,
-      &my_format, &samples_out);
-  speex_dec_convert (dec->srcpad, GST_FORMAT_DEFAULT, total_samples,
-      &my_format, &total_samples);
-  gst_query_set_position (query, GST_FORMAT_TIME, samples_out, total_samples);
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_POSITION:
+    {
+      gint64 cur;
+      GstFormat format;
+
+      gst_query_parse_position (query, &format, NULL);
+
+      speex_dec_convert (dec->srcpad, GST_FORMAT_DEFAULT, dec->samples_out,
+          &format, &cur);
+
+      gst_query_set_position (query, format, cur);
+      break;
+    }
+    case GST_QUERY_DURATION:
+    {
+      GstPad *peer;
+      GstFormat my_format = GST_FORMAT_TIME;
+      gint64 total_samples;
+
+      if (!(peer = gst_pad_get_peer (dec->sinkpad)))
+        return FALSE;
+
+      gst_pad_query_duration (peer, &my_format, &total_samples);
+      gst_object_unref (peer);
+
+      speex_dec_convert (dec->srcpad, GST_FORMAT_DEFAULT, total_samples,
+          &my_format, &total_samples);
+
+      gst_query_set_duration (query, GST_FORMAT_TIME, total_samples);
+      break;
+    }
+    default:
+      return FALSE;
+      break;
+  }
 
   return TRUE;
 }
index db61465..f5cfa56 100644 (file)
@@ -390,10 +390,8 @@ gst_avi_demux_handle_src_query (GstPad * pad, GstQuery * query)
 
   switch (GST_QUERY_TYPE (query)) {
     case GST_QUERY_POSITION:{
-      gint64 len, pos = 0;
+      gint64 pos = 0;
 
-      len = (((gfloat) stream->strh->scale) * stream->strh->length /
-          stream->strh->rate) * GST_SECOND;
       if (stream->strh->type == GST_RIFF_FCC_auds) {
         if (!stream->strh->samplesize) {
           pos = GST_SECOND * stream->current_frame *
@@ -422,7 +420,16 @@ gst_avi_demux_handle_src_query (GstPad * pad, GstQuery * query)
         }
       }
       if (res)
-        gst_query_set_position (query, GST_FORMAT_TIME, pos, len);
+        gst_query_set_position (query, GST_FORMAT_TIME, pos);
+      break;
+    }
+    case GST_QUERY_DURATION:
+    {
+      gint64 len;
+
+      len = (((gfloat) stream->strh->scale) * stream->strh->length /
+          stream->strh->rate) * GST_SECOND;
+      gst_query_set_duration (query, GST_FORMAT_TIME, len);
       break;
     }
     default:
index 7fe801b..fc1e743 100644 (file)
@@ -132,7 +132,7 @@ gst_navseek_seek (GstNavSeek * navseek, gint64 offset)
 
   /* Query for the current time then attempt to set to time + offset */
   peer_pad = gst_pad_get_peer (GST_BASE_TRANSFORM (navseek)->sinkpad);
-  ret = gst_pad_query_position (peer_pad, &peer_format, &peer_value, NULL);
+  ret = gst_pad_query_position (peer_pad, &peer_format, &peer_value);
 
   if (ret && peer_format == GST_FORMAT_TIME) {
     GstEvent *event;
index 82bdb3c..d60579b 100644 (file)
@@ -182,8 +182,8 @@ gst_progress_report_report (GstProgressReport * filter, GTimeVal cur_time)
 
     format = try_formats[i];
 
-    if (gst_pad_query_position (peer_pad, &format, &cur_progress,
-            &total_progress)) {
+    if (gst_pad_query_position (peer_pad, &format, &cur_progress) &&
+        gst_pad_query_duration (peer_pad, &format, &total_progress)) {
       switch (format) {
         case GST_FORMAT_BYTES:
           format_name = "bytes";
index 02d36d9..db8606a 100644 (file)
@@ -366,9 +366,9 @@ gint64
 gst_ebml_read_get_length (GstEbmlRead * ebml)
 {
   GstFormat fmt = GST_FORMAT_BYTES;
-  gint64 pos, end;
+  gint64 end;
 
-  if (!gst_pad_query_position (GST_PAD_PEER (ebml->sinkpad), &fmt, &pos, &end))
+  if (!gst_pad_query_duration (GST_PAD_PEER (ebml->sinkpad), &fmt, &end))
     g_return_val_if_reached (0);        ///// FIXME /////////
 
   if (fmt != GST_FORMAT_BYTES || end < 0)
index 1b2d72d..dbb81cc 100644 (file)
@@ -972,7 +972,7 @@ gst_matroska_demux_handle_src_query (GstPad * pad, GstQuery * query)
     {
       GstFormat format;
 
-      gst_query_parse_position (query, &format, NULL, NULL);
+      gst_query_parse_position (query, &format, NULL);
 
       if (format != GST_FORMAT_TIME) {
         GST_DEBUG ("only query position on TIME is supported");
@@ -980,12 +980,25 @@ gst_matroska_demux_handle_src_query (GstPad * pad, GstQuery * query)
       }
 
       GST_LOCK (demux);
+      gst_query_set_position (query, GST_FORMAT_TIME, demux->pos);
+      GST_UNLOCK (demux);
+
+      res = TRUE;
+      break;
+    }
+    case GST_QUERY_DURATION:
+    {
+      GstFormat format;
+
+      gst_query_parse_position (query, &format, NULL);
 
-      /* mabe we should only fill in the total time and let
-       * decoders fill in the current position? (like oggdemux) */
-      gst_query_set_position (query, GST_FORMAT_TIME, demux->pos,
-          demux->duration);
+      if (format != GST_FORMAT_TIME) {
+        GST_DEBUG ("only query duration on TIME is supported");
+        break;
+      }
 
+      GST_LOCK (demux);
+      gst_query_set_duration (query, GST_FORMAT_TIME, demux->duration);
       GST_UNLOCK (demux);
 
       res = TRUE;
index 3d7944f..ae2968b 100644 (file)
@@ -1034,12 +1034,12 @@ gst_matroska_mux_start (GstMatroskaMux * mux)
     thepad = collect_pad->collect.pad;
 
     /* Query the total length of the track. */
-    query = gst_query_new_position (GST_FORMAT_TIME);
+    query = gst_query_new_duration (GST_FORMAT_TIME);
     if (gst_pad_query (GST_PAD_PEER (thepad), query)) {
       GstFormat format;
-      gint64 cur, trackduration;
+      gint64 trackduration;
 
-      gst_query_parse_position (query, &format, &cur, &trackduration);
+      gst_query_parse_duration (query, &format, &trackduration);
 
       if ((gdouble) trackduration > duration) {
         duration = (gdouble) trackduration;
index 19a7697..af081a0 100644 (file)
@@ -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: