gst/: API change fix.
authorWim Taymans <wim.taymans@gmail.com>
Wed, 19 Oct 2005 15:58:01 +0000 (15:58 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Wed, 19 Oct 2005 15:58:01 +0000 (15:58 +0000)
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (gst_qtdemux_get_src_query_types),
(gst_qtdemux_handle_src_query):
* gst/speed/gstspeed.c: (speed_get_query_types), (speed_src_query):
* gst/tta/gstttaparse.c: (gst_tta_parse_src_event),
(gst_tta_parse_get_query_types), (gst_tta_parse_query):
API change fix.

ChangeLog
gst/qtdemux/qtdemux.c
gst/speed/gstspeed.c
gst/tta/gstttaparse.c

index 699b99f007f745ea6ef3365877ff2da1ec71cf1e..afa4a7e184c33ec9e43f209532ee331069542396 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2005-10-19  Wim Taymans  <wim@fluendo.com>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_get_src_query_types),
+       (gst_qtdemux_handle_src_query):
+       * gst/speed/gstspeed.c: (speed_get_query_types), (speed_src_query):
+       * gst/tta/gstttaparse.c: (gst_tta_parse_src_event),
+       (gst_tta_parse_get_query_types), (gst_tta_parse_query):
+       API change fix.
+
 2005-10-19  Tim-Philipp Müller  <tim at centricular dot net>
 
        * configure.ac:
index fe29ba514879a01fa19a235cfd7547f722e39c0b..33f02533f42b2573bd02784a38399a45cc262a09 100644 (file)
@@ -312,6 +312,7 @@ gst_qtdemux_get_src_query_types (GstPad * pad)
 {
   static const GstQueryType src_types[] = {
     GST_QUERY_POSITION,
+    GST_QUERY_DURATION,
     0
   };
 
@@ -326,9 +327,14 @@ gst_qtdemux_handle_src_query (GstPad * pad, GstQuery * query)
 
   switch (GST_QUERY_TYPE (query)) {
     case GST_QUERY_POSITION:
-      if (qtdemux->duration != 0 && qtdemux->timescale != 0 &&
-          GST_CLOCK_TIME_IS_VALID (qtdemux->last_ts)) {
-        gst_query_set_position (query, GST_FORMAT_TIME, qtdemux->last_ts,
+      if (GST_CLOCK_TIME_IS_VALID (qtdemux->last_ts)) {
+        gst_query_set_position (query, GST_FORMAT_TIME, qtdemux->last_ts);
+        res = TRUE;
+      }
+      break;
+    case GST_QUERY_DURATION:
+      if (qtdemux->duration != 0 && qtdemux->timescale != 0) {
+        gst_query_set_duration (query, GST_FORMAT_TIME,
             (guint64) qtdemux->duration * GST_SECOND / qtdemux->timescale);
         res = TRUE;
       }
index 9e69180a9f7470e7a3ce5777396322b294aca855..850ebc819d2dbaf4ac61176fd286566c931d1729 100644 (file)
@@ -182,6 +182,7 @@ speed_get_query_types (GstPad * pad)
 {
   static const GstQueryType src_query_types[] = {
     GST_QUERY_POSITION,
+    GST_QUERY_DURATION,
     0
   };
 
@@ -334,64 +335,100 @@ speed_src_query (GstPad * pad, GstQuery * query)
     {
       GstFormat format;
       GstFormat rformat = GST_FORMAT_TIME;
-      gint64 cur, end;
+      gint64 cur;
       GstPad *peer;
       GstFormat conv_format = GST_FORMAT_TIME;
 
       /* save requested format */
-      gst_query_parse_position (query, &format, NULL, NULL);
-
-      /* query peer for total length in bytes */
-      gst_query_set_position (query, GST_FORMAT_TIME, -1, -1);
+      gst_query_parse_position (query, &format, NULL);
 
+      /* query peer for current position in time */
+      gst_query_set_position (query, GST_FORMAT_TIME, -1);
 
       if ((peer = gst_pad_get_peer (filter->sinkpad)) == NULL)
         goto error;
 
-      if (!gst_pad_query_position (peer, &rformat, &cur, &end)) {
+      if (!gst_pad_query_position (peer, &rformat, &cur)) {
         GST_LOG_OBJECT (filter, "query on peer pad failed");
         gst_object_unref (peer);
         goto error;
       }
       gst_object_unref (peer);
 
-
       if (rformat == GST_FORMAT_BYTES)
-        GST_LOG_OBJECT (filter, "peer pad returned total=%lld bytes", end);
+        GST_LOG_OBJECT (filter, "peer pad returned current=%lld bytes", cur);
       else if (rformat == GST_FORMAT_TIME)
-        GST_LOG_OBJECT (filter, "peer pad returned time=%lld", end);
+        GST_LOG_OBJECT (filter, "peer pad returned time=%lld", cur);
 
       /* convert to time format */
       if (!gst_speed_convert (pad, rformat, cur, &conv_format, &cur)) {
         ret = FALSE;
         break;
       }
+
+      /* adjust for speed factor */
+      cur /= filter->speed;
+
       /* convert to time format */
-      if (!gst_speed_convert (pad, rformat, end, &conv_format, &end)) {
+      if (!gst_speed_convert (pad, conv_format, cur, &format, &cur)) {
         ret = FALSE;
         break;
       }
+      gst_query_set_position (query, format, cur);
 
-      /* adjust for speed factor */
-      cur /= filter->speed;
-      end /= filter->speed;
+      GST_LOG_OBJECT (filter,
+          "position query: we return %llu (format %u)", cur, format);
+
+      break;
+    }
+    case GST_QUERY_DURATION:
+    {
+      GstFormat format;
+      GstFormat rformat = GST_FORMAT_TIME;
+      gint64 end;
+      GstPad *peer;
+      GstFormat conv_format = GST_FORMAT_TIME;
+
+      /* save requested format */
+      gst_query_parse_duration (query, &format, NULL);
+
+      /* query peer for total length in time */
+      gst_query_set_duration (query, GST_FORMAT_TIME, -1);
+
+      if ((peer = gst_pad_get_peer (filter->sinkpad)) == NULL)
+        goto error;
+
+      if (!gst_pad_query_duration (peer, &rformat, &end)) {
+        GST_LOG_OBJECT (filter, "query on peer pad failed");
+        gst_object_unref (peer);
+        goto error;
+      }
+      gst_object_unref (peer);
+
+      if (rformat == GST_FORMAT_BYTES)
+        GST_LOG_OBJECT (filter, "peer pad returned total=%lld bytes", end);
+      else if (rformat == GST_FORMAT_TIME)
+        GST_LOG_OBJECT (filter, "peer pad returned time=%lld", end);
 
       /* convert to time format */
-      if (!gst_speed_convert (pad, conv_format, cur, &format, &cur)) {
+      if (!gst_speed_convert (pad, rformat, end, &conv_format, &end)) {
         ret = FALSE;
         break;
       }
+
+      /* adjust for speed factor */
+      end /= filter->speed;
+
       /* convert to time format */
       if (!gst_speed_convert (pad, conv_format, end, &format, &end)) {
         ret = FALSE;
         break;
       }
 
-      gst_query_set_position (query, format, cur, end);
+      gst_query_set_duration (query, format, end);
 
       GST_LOG_OBJECT (filter,
-          "position query: peer returned total: %llu - we return %llu (format %u)",
-          end, cur, format);
+          "duration query: we return %llu (format %u)", end, format);
 
       break;
     }
index f6845a6819189e443a1e19cdd8fb0e5989c249bb..223b66576521ecc8dab84666e949e5741017bb70 100644 (file)
@@ -238,6 +238,7 @@ gst_tta_parse_get_query_types (GstPad * pad)
 {
   static const GstQueryType types[] = {
     GST_QUERY_POSITION,
+    GST_QUERY_DURATION,
     0
   };
 
@@ -253,23 +254,39 @@ gst_tta_parse_query (GstPad * pad, GstQuery * query)
     case GST_QUERY_POSITION:
     {
       GstFormat format;
-      gint64 cur, end;
+      gint64 cur;
 
-      gst_query_parse_position (query, &format, NULL, NULL);
+      gst_query_parse_position (query, &format, NULL);
       switch (format) {
         case GST_FORMAT_TIME:
           cur = ttaparse->index[ttaparse->current_frame].time;
+          break;
+        default:
+          format = GST_FORMAT_BYTES;
+          cur = ttaparse->index[ttaparse->current_frame].pos;
+          break;
+      }
+      gst_query_set_position (query, format, cur);
+      break;
+    }
+    case GST_QUERY_DURATION:
+    {
+      GstFormat format;
+      gint64 end;
+
+      gst_query_parse_duration (query, &format, NULL);
+      switch (format) {
+        case GST_FORMAT_TIME:
           end = ((gdouble) ttaparse->data_length /
               (gdouble) ttaparse->samplerate) * GST_SECOND;
           break;
         default:
           format = GST_FORMAT_BYTES;
-          cur = ttaparse->index[ttaparse->current_frame].pos;
           end = ttaparse->index[ttaparse->num_frames].pos +
               ttaparse->index[ttaparse->num_frames].size;
           break;
       }
-      gst_query_set_position (query, format, cur, end);
+      gst_query_set_duration (query, format, end);
       break;
     }
     default: