diff --git a/ext/kate/gstkateenc.c b/ext/kate/gstkateenc.c index 4df6ca3301..b2865f7d4f 100644 --- a/ext/kate/gstkateenc.c +++ b/ext/kate/gstkateenc.c @@ -606,6 +606,7 @@ gst_kate_enc_send_headers (GstKateEnc * ke) } kate_packet_clear (&kp); + GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_HEADER); headers = g_list_append (headers, buffer); } else if (ret > 0) { GST_LOG_OBJECT (ke, "Last header encoded"); diff --git a/ext/kate/gstkateparse.c b/ext/kate/gstkateparse.c index 52bae27baf..eef7acf020 100644 --- a/ext/kate/gstkateparse.c +++ b/ext/kate/gstkateparse.c @@ -200,6 +200,7 @@ gst_kate_parse_push_headers (GstKateParse * parse) } gst_buffer_unmap (outbuf, &info); /* takes ownership of outbuf, which was previously in parse->streamheader */ + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_HEADER); outbuf_list = g_list_append (outbuf_list, outbuf); headers = headers->next; } diff --git a/ext/kate/gstkateutil.c b/ext/kate/gstkateutil.c index 1d373269e7..d6c45d8d87 100644 --- a/ext/kate/gstkateutil.c +++ b/ext/kate/gstkateutil.c @@ -61,17 +61,16 @@ gst_kate_util_set_header_on_caps (GstElement * element, GstCaps * caps, GstBuffer *buffer = headers->data; g_assert (buffer); g_value_init (&value, GST_TYPE_BUFFER); - /* as in theoraenc, we need to copy to avoid circular references */ buffer = gst_buffer_copy (buffer); - gst_value_set_buffer (&value, buffer); - gst_buffer_unref (buffer); + GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_HEADER); + gst_value_take_buffer (&value, buffer); gst_value_array_append_value (&array, &value); g_value_unset (&value); headers = headers->next; } - gst_structure_set_value (structure, "streamheader", &array); - g_value_unset (&array); + gst_structure_take_value (structure, "streamheader", &array); + GST_LOG_OBJECT (element, "here are the newly set caps: %" GST_PTR_FORMAT, caps);