From 4c3c22418f9d5e9ef27fe8e57821d92b7c4fd503 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Sat, 16 Dec 2006 19:33:26 +0000 Subject: [PATCH] plugins/elements/gstidentity.c: Print additional debug info when the stream isn't perfectly timestamped; don't try to... Original commit message from CVS: * plugins/elements/gstidentity.c: (gst_identity_check_perfect): Print additional debug info when the stream isn't perfectly timestamped; don't try to use invalid durations. --- ChangeLog | 6 ++++++ plugins/elements/gstidentity.c | 21 ++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index dbf1f2a0fb..17b27a9a15 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-12-16 Tim-Philipp Müller + + * plugins/elements/gstidentity.c: (gst_identity_check_perfect): + Print additional debug info when the stream isn't perfectly + timestamped; don't try to use invalid durations. + 2006-12-16 Tim-Philipp Müller * docs/design/Makefile.am: diff --git a/plugins/elements/gstidentity.c b/plugins/elements/gstidentity.c index 8960eb9e49..04992ac9d7 100644 --- a/plugins/elements/gstidentity.c +++ b/plugins/elements/gstidentity.c @@ -318,15 +318,22 @@ gst_identity_check_perfect (GstIdentity * identity, GstBuffer * buf) /* invalid timestamp drops us out of check. FIXME: maybe warn ? */ if (timestamp != GST_CLOCK_TIME_NONE) { /* check if we had a previous buffer to compare to */ - if (identity->prev_timestamp != GST_CLOCK_TIME_NONE) { - guint64 offset; + if (identity->prev_timestamp != GST_CLOCK_TIME_NONE && + identity->prev_duration != GST_CLOCK_TIME_NONE) { + guint64 offset, t_expected; + gint64 dt; - if (identity->prev_timestamp + identity->prev_duration != timestamp) { + t_expected = identity->prev_timestamp + identity->prev_duration; + dt = timestamp - t_expected; + if (dt != 0) { GST_WARNING_OBJECT (identity, "Buffer not time-contiguous with previous one: " "prev ts %" GST_TIME_FORMAT ", prev dur %" GST_TIME_FORMAT ", new ts %" - GST_TIME_FORMAT, GST_TIME_ARGS (identity->prev_timestamp), - GST_TIME_ARGS (identity->prev_duration), GST_TIME_ARGS (timestamp)); + GST_TIME_FORMAT " (expected ts %" GST_TIME_FORMAT ", delta=%c%" + GST_TIME_FORMAT ")", GST_TIME_ARGS (identity->prev_timestamp), + GST_TIME_ARGS (identity->prev_duration), GST_TIME_ARGS (timestamp), + GST_TIME_ARGS (t_expected), (dt < 0) ? '-' : '+', + GST_TIME_ARGS ((dt < 0) ? (GstClockTime) (-dt) : dt)); } offset = GST_BUFFER_OFFSET (buf); @@ -336,7 +343,11 @@ gst_identity_check_perfect (GstIdentity * identity, GstBuffer * buf) "prev offset_end %" G_GINT64_FORMAT ", new offset %" G_GINT64_FORMAT, identity->prev_offset_end, offset); } + } else { + GST_DEBUG_OBJECT (identity, "can't check time-contiguity, no timestamp " + "and/or duration were set on previous buffer"); } + /* update prev values */ identity->prev_timestamp = timestamp; identity->prev_duration = GST_BUFFER_DURATION (buf);