From 536aef22189a004206ab4b739a96e666e9e4b99f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Mon, 1 Aug 2005 11:15:47 +0000 Subject: [PATCH] gst/elements/gsttypefindelement.*: Set caps on all outgoing buffers, not just the first one. Original commit message from CVS: * gst/elements/gsttypefindelement.c: (gst_type_find_element_have_type), (gst_type_find_element_init), (stop_typefinding), (gst_type_find_element_handle_event), (gst_type_find_element_chain), (gst_type_find_element_getrange): * gst/elements/gsttypefindelement.h: Set caps on all outgoing buffers, not just the first one. --- ChangeLog | 9 +++++++++ gst/elements/gsttypefindelement.c | 27 +++++---------------------- gst/elements/gsttypefindelement.h | 1 - plugins/elements/gsttypefindelement.c | 27 +++++---------------------- plugins/elements/gsttypefindelement.h | 1 - 5 files changed, 19 insertions(+), 46 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6369ea86e5..1c07ca982d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-08-01 Tim-Philipp Müller + + * gst/elements/gsttypefindelement.c: + (gst_type_find_element_have_type), (gst_type_find_element_init), + (stop_typefinding), (gst_type_find_element_handle_event), + (gst_type_find_element_chain), (gst_type_find_element_getrange): + * gst/elements/gsttypefindelement.h: + Set caps on all outgoing buffers, not just the first one. + 2005-08-01 Tim-Philipp Müller * gst/elements/gsttypefindelement.c: diff --git a/gst/elements/gsttypefindelement.c b/gst/elements/gsttypefindelement.c index 28ea098484..a22e2c708d 100644 --- a/gst/elements/gsttypefindelement.c +++ b/gst/elements/gsttypefindelement.c @@ -148,20 +148,9 @@ gst_type_find_element_have_type (GstTypeFindElement * typefind, GST_INFO_OBJECT (typefind, "found caps %" GST_PTR_FORMAT, caps); typefind->caps = gst_caps_copy (caps); - typefind->caps_changed = TRUE; gst_pad_set_caps (typefind->src, (GstCaps *) caps); } -static inline void -gst_type_find_element_check_set_buffer_caps (GstTypeFindElement * typefind, - GstBuffer * buffer) -{ - if (typefind->caps_changed && buffer != NULL) { - gst_buffer_set_caps (buffer, typefind->caps); - typefind->caps_changed = FALSE; - } -} - static void gst_type_find_element_base_init (gpointer g_class) { @@ -240,7 +229,6 @@ gst_type_find_element_init (GstTypeFindElement * typefind) typefind->mode = MODE_TYPEFIND; typefind->caps = NULL; - typefind->caps_changed = FALSE; typefind->min_probability = 1; typefind->max_probability = GST_TYPE_FIND_MAXIMUM; @@ -441,7 +429,7 @@ stop_typefinding (GstTypeFindElement * typefind) gst_buffer_unref (typefind->store); } else { typefind->mode = MODE_NORMAL; - gst_type_find_element_check_set_buffer_caps (typefind, typefind->store); + gst_buffer_set_caps (typefind->store, typefind->caps); gst_pad_push (typefind->src, typefind->store); } typefind->store = NULL; @@ -512,8 +500,7 @@ gst_type_find_element_handle_event (GstPad * pad, GstEvent * event) g_signal_emit (typefind, gst_type_find_element_signals[HAVE_TYPE], 0, entry->probability, entry->caps); stop_typefinding (typefind); - gst_type_find_element_check_set_buffer_caps (typefind, - typefind->store); + gst_buffer_set_caps (typefind->store, typefind->caps); gst_pad_push (typefind->src, typefind->store); typefind->store = NULL; res = gst_pad_event_default (pad, event); @@ -614,7 +601,7 @@ gst_type_find_element_chain (GstPad * pad, GstBuffer * buffer) switch (typefind->mode) { case MODE_NORMAL: - gst_type_find_element_check_set_buffer_caps (typefind, buffer); + gst_buffer_set_caps (buffer, typefind->caps); return gst_pad_push (typefind->src, buffer); case MODE_TYPEFIND:{ gboolean done = TRUE; @@ -766,12 +753,8 @@ gst_type_find_element_getrange (GstPad * srcpad, ret = gst_pad_pull_range (typefind->sink, offset, length, buffer); - if (typefind->caps_changed) { - if (ret == GST_FLOW_OK && buffer && *buffer) { - gst_buffer_set_caps (*buffer, typefind->caps); - typefind->caps_changed = FALSE; - } - } + if (ret == GST_FLOW_OK && buffer && *buffer) + gst_buffer_set_caps (*buffer, typefind->caps); return ret; } diff --git a/gst/elements/gsttypefindelement.h b/gst/elements/gsttypefindelement.h index 6307017924..76b8e6063f 100644 --- a/gst/elements/gsttypefindelement.h +++ b/gst/elements/gsttypefindelement.h @@ -51,7 +51,6 @@ struct _GstTypeFindElement { guint min_probability; guint max_probability; GstCaps * caps; - gboolean caps_changed; guint mode; GstBuffer * store; diff --git a/plugins/elements/gsttypefindelement.c b/plugins/elements/gsttypefindelement.c index 28ea098484..a22e2c708d 100644 --- a/plugins/elements/gsttypefindelement.c +++ b/plugins/elements/gsttypefindelement.c @@ -148,20 +148,9 @@ gst_type_find_element_have_type (GstTypeFindElement * typefind, GST_INFO_OBJECT (typefind, "found caps %" GST_PTR_FORMAT, caps); typefind->caps = gst_caps_copy (caps); - typefind->caps_changed = TRUE; gst_pad_set_caps (typefind->src, (GstCaps *) caps); } -static inline void -gst_type_find_element_check_set_buffer_caps (GstTypeFindElement * typefind, - GstBuffer * buffer) -{ - if (typefind->caps_changed && buffer != NULL) { - gst_buffer_set_caps (buffer, typefind->caps); - typefind->caps_changed = FALSE; - } -} - static void gst_type_find_element_base_init (gpointer g_class) { @@ -240,7 +229,6 @@ gst_type_find_element_init (GstTypeFindElement * typefind) typefind->mode = MODE_TYPEFIND; typefind->caps = NULL; - typefind->caps_changed = FALSE; typefind->min_probability = 1; typefind->max_probability = GST_TYPE_FIND_MAXIMUM; @@ -441,7 +429,7 @@ stop_typefinding (GstTypeFindElement * typefind) gst_buffer_unref (typefind->store); } else { typefind->mode = MODE_NORMAL; - gst_type_find_element_check_set_buffer_caps (typefind, typefind->store); + gst_buffer_set_caps (typefind->store, typefind->caps); gst_pad_push (typefind->src, typefind->store); } typefind->store = NULL; @@ -512,8 +500,7 @@ gst_type_find_element_handle_event (GstPad * pad, GstEvent * event) g_signal_emit (typefind, gst_type_find_element_signals[HAVE_TYPE], 0, entry->probability, entry->caps); stop_typefinding (typefind); - gst_type_find_element_check_set_buffer_caps (typefind, - typefind->store); + gst_buffer_set_caps (typefind->store, typefind->caps); gst_pad_push (typefind->src, typefind->store); typefind->store = NULL; res = gst_pad_event_default (pad, event); @@ -614,7 +601,7 @@ gst_type_find_element_chain (GstPad * pad, GstBuffer * buffer) switch (typefind->mode) { case MODE_NORMAL: - gst_type_find_element_check_set_buffer_caps (typefind, buffer); + gst_buffer_set_caps (buffer, typefind->caps); return gst_pad_push (typefind->src, buffer); case MODE_TYPEFIND:{ gboolean done = TRUE; @@ -766,12 +753,8 @@ gst_type_find_element_getrange (GstPad * srcpad, ret = gst_pad_pull_range (typefind->sink, offset, length, buffer); - if (typefind->caps_changed) { - if (ret == GST_FLOW_OK && buffer && *buffer) { - gst_buffer_set_caps (*buffer, typefind->caps); - typefind->caps_changed = FALSE; - } - } + if (ret == GST_FLOW_OK && buffer && *buffer) + gst_buffer_set_caps (*buffer, typefind->caps); return ret; } diff --git a/plugins/elements/gsttypefindelement.h b/plugins/elements/gsttypefindelement.h index 6307017924..76b8e6063f 100644 --- a/plugins/elements/gsttypefindelement.h +++ b/plugins/elements/gsttypefindelement.h @@ -51,7 +51,6 @@ struct _GstTypeFindElement { guint min_probability; guint max_probability; GstCaps * caps; - gboolean caps_changed; guint mode; GstBuffer * store;