From: Tim-Philipp Müller Date: Fri, 18 Jun 2010 11:00:53 +0000 (+0100) Subject: typefind: make sure buffers' metadata is writable before setting caps on them X-Git-Tag: RELEASE-0.10.30~62 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e1573f194c8e6d4ca55314d9c4477cf4f25c90a1;p=platform%2Fupstream%2Fgstreamer.git typefind: make sure buffers' metadata is writable before setting caps on them Fixes warnings when using playbin2 with dvb:// streams, where typefind comes after mpegtsparse. --- diff --git a/plugins/elements/gsttypefindelement.c b/plugins/elements/gsttypefindelement.c index 433dbb9..1a38916 100644 --- a/plugins/elements/gsttypefindelement.c +++ b/plugins/elements/gsttypefindelement.c @@ -477,8 +477,9 @@ stop_typefinding (GstTypeFindElement * typefind) GST_OBJECT_LOCK (typefind); if (typefind->store) { - GstBuffer *store = typefind->store; + GstBuffer *store; + store = gst_buffer_make_metadata_writable (typefind->store); typefind->store = NULL; gst_buffer_set_caps (store, typefind->caps); GST_OBJECT_UNLOCK (typefind); @@ -646,6 +647,7 @@ gst_type_find_element_setcaps (GstPad * pad, GstCaps * caps) typefind->store = NULL; GST_DEBUG_OBJECT (typefind, "Pushing store: %d", GST_BUFFER_SIZE (store)); + store = gst_buffer_make_metadata_writable (store); gst_buffer_set_caps (store, typefind->caps); GST_OBJECT_UNLOCK (typefind); @@ -754,6 +756,7 @@ gst_type_find_element_chain (GstPad * pad, GstBuffer * buffer) return GST_FLOW_ERROR; case MODE_NORMAL: GST_OBJECT_LOCK (typefind); + buffer = gst_buffer_make_metadata_writable (buffer); gst_buffer_set_caps (buffer, typefind->caps); GST_OBJECT_UNLOCK (typefind); return gst_pad_push (typefind->src, buffer); @@ -862,6 +865,8 @@ gst_type_find_element_getrange (GstPad * srcpad, if (ret == GST_FLOW_OK && buffer && *buffer) { GST_OBJECT_LOCK (typefind); + + /* we assume that pulled buffers are meta-data writable */ gst_buffer_set_caps (*buffer, typefind->caps); GST_OBJECT_UNLOCK (typefind); }