From f543ac34f343202b9c9682cc0bcaeda156b37018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 24 Mar 2011 09:22:56 +0100 Subject: [PATCH] celtdec: Read the additional, optional extra headers from the caps too --- ext/celt/gstceltdec.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/ext/celt/gstceltdec.c b/ext/celt/gstceltdec.c index f4b14c4b76..e27c6a52c8 100644 --- a/ext/celt/gstceltdec.c +++ b/ext/celt/gstceltdec.c @@ -140,6 +140,9 @@ gst_celt_dec_reset (GstCeltDec * dec) gst_buffer_replace (&dec->streamheader, NULL); gst_buffer_replace (&dec->vorbiscomment, NULL); + g_list_foreach (dec->extra_headers, (GFunc) gst_mini_object_unref, NULL); + g_list_free (dec->extra_headers); + dec->extra_headers = NULL; memset (&dec->header, 0, sizeof (dec->header)); } @@ -206,6 +209,22 @@ celt_dec_sink_setcaps (GstPad * pad, GstCaps * caps) goto done; gst_buffer_replace (&dec->vorbiscomment, buf); } + + g_list_foreach (dec->extra_headers, (GFunc) gst_mini_object_unref, NULL); + g_list_free (dec->extra_headers); + dec->extra_headers = NULL; + + if (gst_value_array_get_size (streamheader) > 2) { + gint i, n; + + n = gst_value_array_get_size (streamheader); + for (i = 2; i < n; i++) { + header = gst_value_array_get_value (streamheader, i); + buf = gst_value_get_buffer (header); + dec->extra_headers = + g_list_prepend (dec->extra_headers, gst_buffer_ref (buf)); + } + } } done: