gst/: Better debugging of clocking info.
authorWim Taymans <wim.taymans@gmail.com>
Thu, 28 Apr 2005 16:28:28 +0000 (16:28 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Thu, 28 Apr 2005 16:28:28 +0000 (16:28 +0000)
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_basesink_base_init),
(gst_basesink_pad_getcaps), (gst_basesink_init),
(gst_basesink_do_sync):
* gst/gstclock.c: (gst_clock_entry_new):
* gst/gstevent.c: (gst_event_discont_get_value):
* gst/gstpipeline.c: (pipeline_bus_handler),
(gst_pipeline_change_state):
* gst/gstsystemclock.c: (gst_system_clock_id_wait_unlocked):
Better debugging of clocking info.
Allow NULL values when getting discont values.

ChangeLog
gst/base/gstbasesink.c
gst/gstclock.c
gst/gstevent.c
gst/gstpipeline.c
gst/gstsystemclock.c
libs/gst/base/gstbasesink.c

index e77b55f..c8a5d57 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2005-04-28  Wim Taymans  <wim@fluendo.com>
+
+       * gst/base/gstbasesink.c: (gst_basesink_base_init),
+       (gst_basesink_pad_getcaps), (gst_basesink_init),
+       (gst_basesink_do_sync):
+       * gst/gstclock.c: (gst_clock_entry_new):
+       * gst/gstevent.c: (gst_event_discont_get_value):
+       * gst/gstpipeline.c: (pipeline_bus_handler),
+       (gst_pipeline_change_state):
+       * gst/gstsystemclock.c: (gst_system_clock_id_wait_unlocked):
+       Better debugging of clocking info.
+       Allow NULL values when getting discont values.
+
 2005-04-27  Wim Taymans  <wim@fluendo.com>
 
        * check/gst/gstobject.c: (START_TEST), (gst_object_suite):
index 4720e35..4f325c9 100644 (file)
@@ -612,6 +612,9 @@ gst_basesink_do_sync (GstBaseSink * basesink, GstBuffer * buffer)
     if (bclass->get_times)
       bclass->get_times (basesink, buffer, &start, &end);
 
+    GST_DEBUG_OBJECT (basesink, "got times start: %" GST_TIME_FORMAT
+        ", end: %" GST_TIME_FORMAT, GST_TIME_ARGS (start), GST_TIME_ARGS (end));
+
     if (GST_CLOCK_TIME_IS_VALID (start)) {
       /* save clock id so that we can unlock it if needed */
       GST_LOCK (basesink);
index 017a62f..7f3a199 100644 (file)
@@ -74,7 +74,8 @@ gst_clock_entry_new (GstClock * clock, GstClockTime time,
 #ifndef GST_DISABLE_TRACE
   gst_alloc_trace_new (_gst_clock_entry_trace, entry);
 #endif
-  GST_CAT_DEBUG (GST_CAT_CLOCK, "created entry %p", entry);
+  GST_CAT_DEBUG (GST_CAT_CLOCK, "created entry %p, time %" GST_TIME_FORMAT,
+      entry, GST_TIME_ARGS (time));
 
   gst_atomic_int_set (&entry->refcount, 1);
   entry->clock = clock;
index c4d900e..831ac8c 100644 (file)
@@ -298,15 +298,15 @@ gst_event_discont_get_value (GstEvent * event, GstFormat format,
   gint i, n;
 
   g_return_val_if_fail (event != NULL, FALSE);
-  g_return_val_if_fail (start_value != NULL, FALSE);
-  g_return_val_if_fail (end_value != NULL, FALSE);
 
   n = GST_EVENT_DISCONT_OFFSET_LEN (event);
 
   for (i = 0; i < n; i++) {
     if (GST_EVENT_DISCONT_OFFSET (event, i).format == format) {
-      *start_value = GST_EVENT_DISCONT_OFFSET (event, i).start_value;
-      *end_value = GST_EVENT_DISCONT_OFFSET (event, i).end_value;
+      if (start_value)
+        *start_value = GST_EVENT_DISCONT_OFFSET (event, i).start_value;
+      if (end_value)
+        *end_value = GST_EVENT_DISCONT_OFFSET (event, i).end_value;
       return TRUE;
     }
   }
index 62f9005..0fa98c1 100644 (file)
@@ -388,8 +388,9 @@ gst_pipeline_change_state (GstElement * element)
         element->base_time = start_time -
             pipeline->stream_time + pipeline->delay;
         GST_DEBUG ("stream_time=%" GST_TIME_FORMAT ", start_time=%"
-            GST_TIME_FORMAT, GST_TIME_ARGS (pipeline->stream_time),
-            GST_TIME_ARGS (start_time));
+            GST_TIME_FORMAT ", base time %" GST_TIME_FORMAT,
+            GST_TIME_ARGS (pipeline->stream_time),
+            GST_TIME_ARGS (start_time), GST_TIME_ARGS (element->base_time));
       } else {
         element->base_time = 0;
         GST_DEBUG ("no clock, using base time of 0");
@@ -411,11 +412,15 @@ gst_pipeline_change_state (GstElement * element)
       break;
     case GST_STATE_PLAYING_TO_PAUSED:
       if (element->clock) {
-        pipeline->stream_time = gst_clock_get_time (element->clock) -
-            element->base_time;
+        GstClockTime now;
+
+        now = gst_clock_get_time (element->clock);
+        pipeline->stream_time = now - element->base_time;
+        GST_DEBUG ("stream_time=%" GST_TIME_FORMAT ", now=%" GST_TIME_FORMAT
+            ", base time %" GST_TIME_FORMAT,
+            GST_TIME_ARGS (pipeline->stream_time),
+            GST_TIME_ARGS (now), GST_TIME_ARGS (element->base_time));
       }
-      GST_DEBUG ("stream_time=%" GST_TIME_FORMAT,
-          GST_TIME_ARGS (pipeline->stream_time));
       break;
     case GST_STATE_PAUSED_TO_READY:
       break;
index 8c45060..2efef87 100644 (file)
@@ -322,25 +322,26 @@ gst_system_clock_get_resolution (GstClock * clock)
 static GstClockReturn
 gst_system_clock_id_wait_unlocked (GstClock * clock, GstClockEntry * entry)
 {
-  GstClockTime real, current, target;
+  GstClockTime entryt, real, now, target;
   GstClockTimeDiff diff;
 
   /* need to call the overridden method */
   real = GST_CLOCK_GET_CLASS (clock)->get_internal_time (clock);
-  target = GST_CLOCK_ENTRY_TIME (entry);
+  entryt = GST_CLOCK_ENTRY_TIME (entry);
 
-  current = gst_clock_adjust_unlocked (clock, real);
-  diff = target - current;
+  now = gst_clock_adjust_unlocked (clock, real);
+  diff = entryt - now;
   target = gst_system_clock_get_internal_time (clock) + diff;
 
   GST_CAT_DEBUG (GST_CAT_CLOCK, "entry %p"
       " target %" GST_TIME_FORMAT
+      " entry %" GST_TIME_FORMAT
       " now %" GST_TIME_FORMAT
       " real %" GST_TIME_FORMAT
       " diff %" G_GINT64_FORMAT,
       entry,
       GST_TIME_ARGS (target),
-      GST_TIME_ARGS (current), GST_TIME_ARGS (real), diff);
+      GST_TIME_ARGS (entryt), GST_TIME_ARGS (now), GST_TIME_ARGS (real), diff);
 
   if (diff > 0) {
     GTimeVal tv;
index 4720e35..4f325c9 100644 (file)
@@ -612,6 +612,9 @@ gst_basesink_do_sync (GstBaseSink * basesink, GstBuffer * buffer)
     if (bclass->get_times)
       bclass->get_times (basesink, buffer, &start, &end);
 
+    GST_DEBUG_OBJECT (basesink, "got times start: %" GST_TIME_FORMAT
+        ", end: %" GST_TIME_FORMAT, GST_TIME_ARGS (start), GST_TIME_ARGS (end));
+
     if (GST_CLOCK_TIME_IS_VALID (start)) {
       /* save clock id so that we can unlock it if needed */
       GST_LOCK (basesink);