From: Wim Taymans Date: Thu, 28 Apr 2005 16:28:28 +0000 (+0000) Subject: gst/: Better debugging of clocking info. X-Git-Tag: RELEASE-0_9_2~534 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=71359c38a02292d367620f153aa2d85465146d7e;p=platform%2Fupstream%2Fgstreamer.git gst/: Better debugging of clocking info. 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. --- diff --git a/ChangeLog b/ChangeLog index e77b55f..c8a5d57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2005-04-28 Wim Taymans + + * 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 * check/gst/gstobject.c: (START_TEST), (gst_object_suite): diff --git a/gst/base/gstbasesink.c b/gst/base/gstbasesink.c index 4720e35..4f325c9 100644 --- a/gst/base/gstbasesink.c +++ b/gst/base/gstbasesink.c @@ -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); diff --git a/gst/gstclock.c b/gst/gstclock.c index 017a62f..7f3a199 100644 --- a/gst/gstclock.c +++ b/gst/gstclock.c @@ -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; diff --git a/gst/gstevent.c b/gst/gstevent.c index c4d900e..831ac8c 100644 --- a/gst/gstevent.c +++ b/gst/gstevent.c @@ -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; } } diff --git a/gst/gstpipeline.c b/gst/gstpipeline.c index 62f9005..0fa98c1 100644 --- a/gst/gstpipeline.c +++ b/gst/gstpipeline.c @@ -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; diff --git a/gst/gstsystemclock.c b/gst/gstsystemclock.c index 8c45060..2efef87 100644 --- a/gst/gstsystemclock.c +++ b/gst/gstsystemclock.c @@ -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; diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c index 4720e35..4f325c9 100644 --- a/libs/gst/base/gstbasesink.c +++ b/libs/gst/base/gstbasesink.c @@ -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);