From 9bd630797ff435a8e332fc8e90b3318084ed450b Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 28 Oct 2003 12:18:01 +0000 Subject: [PATCH] fix issue in buffer_store_get_size spanning multiple buffers, include more checks/debugging while doing so Original commit message from CVS: fix issue in buffer_store_get_size spanning multiple buffers, include more checks/debugging while doing so --- gst/elements/gstbufferstore.c | 16 +++++++++++++--- gst/elements/gsttypefind.c | 1 + gst/elements/gsttypefindelement.c | 1 + plugins/elements/gstbufferstore.c | 16 +++++++++++++--- plugins/elements/gsttypefind.c | 1 + plugins/elements/gsttypefindelement.c | 1 + 6 files changed, 30 insertions(+), 6 deletions(-) diff --git a/gst/elements/gstbufferstore.c b/gst/elements/gstbufferstore.c index 323fc6ca6c..d7dc0b37e1 100644 --- a/gst/elements/gstbufferstore.c +++ b/gst/elements/gstbufferstore.c @@ -51,6 +51,18 @@ static void gst_buffer_store_cleared_func (GstBufferStore * store); static GObjectClass *parent_class = NULL; static guint gst_buffer_store_signals[LAST_SIGNAL] = { 0 }; +G_GNUC_UNUSED static void +debug_buffers (GstBufferStore *store) +{ + GList *walk = store->buffers; + + g_printerr ("BUFFERS in store:\n"); + while (walk) { + g_print ("%15"G_GUINT64_FORMAT" - %7u\n", GST_BUFFER_OFFSET (walk->data), GST_BUFFER_SIZE (walk->data)); + walk = g_list_next (walk); + } + g_printerr ("\n"); +} GType gst_buffer_store_get_type (void) { @@ -424,11 +436,11 @@ gst_buffer_store_get_size (GstBufferStore *store, guint64 offset) cur_offset = 0; } while (walk) { - current = GST_BUFFER (walk->data); if (have_offset && counting && cur_offset + GST_BUFFER_SIZE (current) != GST_BUFFER_OFFSET (walk->data)) { break; } + current = GST_BUFFER (walk->data); if (have_offset) { cur_offset = GST_BUFFER_OFFSET (current); } @@ -451,5 +463,3 @@ gst_buffer_store_get_size (GstBufferStore *store, guint64 offset) return ret; } - - diff --git a/gst/elements/gsttypefind.c b/gst/elements/gsttypefind.c index 7e984124ca..bd5e3d367b 100644 --- a/gst/elements/gsttypefind.c +++ b/gst/elements/gsttypefind.c @@ -331,6 +331,7 @@ static void start_typefinding (GstTypeFindElement *typefind) { g_assert (typefind->caps == NULL); + g_assert (typefind->possibilities == NULL); GST_DEBUG_OBJECT (typefind, "starting typefinding"); typefind->mode = MODE_TYPEFIND; diff --git a/gst/elements/gsttypefindelement.c b/gst/elements/gsttypefindelement.c index 7e984124ca..bd5e3d367b 100644 --- a/gst/elements/gsttypefindelement.c +++ b/gst/elements/gsttypefindelement.c @@ -331,6 +331,7 @@ static void start_typefinding (GstTypeFindElement *typefind) { g_assert (typefind->caps == NULL); + g_assert (typefind->possibilities == NULL); GST_DEBUG_OBJECT (typefind, "starting typefinding"); typefind->mode = MODE_TYPEFIND; diff --git a/plugins/elements/gstbufferstore.c b/plugins/elements/gstbufferstore.c index 323fc6ca6c..d7dc0b37e1 100644 --- a/plugins/elements/gstbufferstore.c +++ b/plugins/elements/gstbufferstore.c @@ -51,6 +51,18 @@ static void gst_buffer_store_cleared_func (GstBufferStore * store); static GObjectClass *parent_class = NULL; static guint gst_buffer_store_signals[LAST_SIGNAL] = { 0 }; +G_GNUC_UNUSED static void +debug_buffers (GstBufferStore *store) +{ + GList *walk = store->buffers; + + g_printerr ("BUFFERS in store:\n"); + while (walk) { + g_print ("%15"G_GUINT64_FORMAT" - %7u\n", GST_BUFFER_OFFSET (walk->data), GST_BUFFER_SIZE (walk->data)); + walk = g_list_next (walk); + } + g_printerr ("\n"); +} GType gst_buffer_store_get_type (void) { @@ -424,11 +436,11 @@ gst_buffer_store_get_size (GstBufferStore *store, guint64 offset) cur_offset = 0; } while (walk) { - current = GST_BUFFER (walk->data); if (have_offset && counting && cur_offset + GST_BUFFER_SIZE (current) != GST_BUFFER_OFFSET (walk->data)) { break; } + current = GST_BUFFER (walk->data); if (have_offset) { cur_offset = GST_BUFFER_OFFSET (current); } @@ -451,5 +463,3 @@ gst_buffer_store_get_size (GstBufferStore *store, guint64 offset) return ret; } - - diff --git a/plugins/elements/gsttypefind.c b/plugins/elements/gsttypefind.c index 7e984124ca..bd5e3d367b 100644 --- a/plugins/elements/gsttypefind.c +++ b/plugins/elements/gsttypefind.c @@ -331,6 +331,7 @@ static void start_typefinding (GstTypeFindElement *typefind) { g_assert (typefind->caps == NULL); + g_assert (typefind->possibilities == NULL); GST_DEBUG_OBJECT (typefind, "starting typefinding"); typefind->mode = MODE_TYPEFIND; diff --git a/plugins/elements/gsttypefindelement.c b/plugins/elements/gsttypefindelement.c index 7e984124ca..bd5e3d367b 100644 --- a/plugins/elements/gsttypefindelement.c +++ b/plugins/elements/gsttypefindelement.c @@ -331,6 +331,7 @@ static void start_typefinding (GstTypeFindElement *typefind) { g_assert (typefind->caps == NULL); + g_assert (typefind->possibilities == NULL); GST_DEBUG_OBJECT (typefind, "starting typefinding"); typefind->mode = MODE_TYPEFIND;