libs/gst/base/gstbasesrc.c: Store new length in segment duration so we don't keep...
authorJonathan Matthew <jonathan@kaolin.wh9.net>
Mon, 13 Nov 2006 17:54:58 +0000 (17:54 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Mon, 13 Nov 2006 17:54:58 +0000 (17:54 +0000)
Original commit message from CVS:
Patch by: Jonathan Matthew <jonathan at kaolin dot wh9 dot net>
* libs/gst/base/gstbasesrc.c: (gst_base_src_update_length):
Store new length in segment duration so we don't keep on calling the
potentially expensize get_size() call. Fixes #370865.

ChangeLog
libs/gst/base/gstbasesrc.c

index fe86a92..ad99333 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-11-13  Wim Taymans  <wim@fluendo.com>
+
+       Patch by: Jonathan Matthew <jonathan at kaolin dot wh9 dot net>
+
+       * libs/gst/base/gstbasesrc.c: (gst_base_src_update_length):
+       Store new length in segment duration so we don't keep on calling the
+       potentially expensize get_size() call. Fixes #370865.
+
 2006-11-10  Tim-Philipp Müller  <tim at centricular dot net>
 
        Patch by: Sergey Scobich  <sergery.scobich at gmail com>
index 8e46447..a60c07e 100644 (file)
@@ -1281,7 +1281,10 @@ gst_base_src_update_length (GstBaseSrc * src, guint64 offset, guint * length)
     if (G_UNLIKELY (offset + *length >= maxsize)) {
       /* see if length of the file changed */
       if (bclass->get_size)
-        bclass->get_size (src, &size);
+        if (!bclass->get_size (src, &size))
+          size = -1;
+
+      gst_segment_set_duration (&src->segment, GST_FORMAT_BYTES, size);
 
       /* make sure we don't exceed the configured segment stop
        * if it was set */
@@ -1297,6 +1300,7 @@ gst_base_src_update_length (GstBaseSrc * src, guint64 offset, guint * length)
       /* else we can clip to the end */
       if (G_UNLIKELY (offset + *length >= maxsize))
         *length = maxsize - offset;
+
     }
   }