From 4e1ccb2885d9b3e7b3a25dfa39b661f01bfb24fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Sun, 3 Mar 2013 17:42:50 +0000 Subject: [PATCH] vorbis: small GValue optimisation No need to copy buffers we put into the streamheader any more now that we don't put caps on buffers any more, so there's no danger of a refcount cycle. --- ext/vorbis/gstvorbisenc.c | 12 ++---------- ext/vorbis/gstvorbisparse.c | 3 +-- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/ext/vorbis/gstvorbisenc.c b/ext/vorbis/gstvorbisenc.c index 859115e001..a8db098710 100644 --- a/ext/vorbis/gstvorbisenc.c +++ b/ext/vorbis/gstvorbisenc.c @@ -569,6 +569,7 @@ gst_vorbis_enc_buffer_from_header_packet (GstVorbisEnc * vorbisenc, GST_BUFFER_OFFSET_END (outbuf) = 0; GST_BUFFER_TIMESTAMP (outbuf) = GST_CLOCK_TIME_NONE; GST_BUFFER_DURATION (outbuf) = GST_CLOCK_TIME_NONE; + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_HEADER); GST_DEBUG ("created header packet buffer, %" G_GSIZE_FORMAT " bytes", gst_buffer_get_size (outbuf)); @@ -638,24 +639,15 @@ _gst_caps_set_buffer_array (GstCaps * caps, const gchar * field, va_start (va, buf); /* put buffers in a fixed list */ while (buf) { - g_assert (gst_buffer_is_writable (buf)); - - /* mark buffer */ - GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_HEADER); - g_value_init (&value, GST_TYPE_BUFFER); - buf = gst_buffer_copy (buf); - GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_HEADER); gst_value_set_buffer (&value, buf); - gst_buffer_unref (buf); gst_value_array_append_value (&array, &value); g_value_unset (&value); buf = va_arg (va, GstBuffer *); } - gst_structure_set_value (structure, field, &array); - g_value_unset (&array); + gst_structure_take_value (structure, field, &array); return caps; } diff --git a/ext/vorbis/gstvorbisparse.c b/ext/vorbis/gstvorbisparse.c index 42bd43688c..587bc02686 100644 --- a/ext/vorbis/gstvorbisparse.c +++ b/ext/vorbis/gstvorbisparse.c @@ -164,9 +164,8 @@ vorbis_parse_set_header_on_caps (GstVorbisParse * parse, GstCaps * caps) g_value_init (&value, GST_TYPE_BUFFER); gst_value_set_buffer (&value, buf3); gst_value_array_append_value (&array, &value); - gst_structure_set_value (structure, "streamheader", &array); + gst_structure_take_value (structure, "streamheader", &array); g_value_unset (&value); - g_value_unset (&array); } static void