From ead8d56f5f613543ad946255cc32ce8faa5fb535 Mon Sep 17 00:00:00 2001 From: Miguel Angel Cabrera Moya Date: Sat, 22 Jan 2011 17:31:40 +0100 Subject: [PATCH] x264enc: make tag event writable before modifying tag list in place To modify an event tag is necessary to be sure that x264enc has its own copy. Also fix indentation. https://bugzilla.gnome.org/show_bug.cgi?id=640272 --- ext/x264/gstx264enc.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/ext/x264/gstx264enc.c b/ext/x264/gstx264enc.c index 1d94e8e..b1fbb5f 100644 --- a/ext/x264/gstx264enc.c +++ b/ext/x264/gstx264enc.c @@ -1496,19 +1496,22 @@ gst_x264_enc_sink_event (GstPad * pad, GstEvent * event) gst_x264_enc_flush_frames (encoder, TRUE); break; case GST_EVENT_TAG:{ - GstTagList *tags = NULL; - - gst_event_parse_tag (event, &tags); - /* drop codec/video-codec and replace encoder/encoder-version */ - gst_tag_list_remove_tag (tags, GST_TAG_VIDEO_CODEC); - gst_tag_list_remove_tag (tags, GST_TAG_CODEC); - gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_ENCODER, "x264", - GST_TAG_ENCODER_VERSION, X264_BUILD, NULL); - /* push is done below */ - } + GstTagList *tags = NULL; + + event = + GST_EVENT (gst_mini_object_make_writable (GST_MINI_OBJECT (event))); + + gst_event_parse_tag (event, &tags); + /* drop codec/video-codec and replace encoder/encoder-version */ + gst_tag_list_remove_tag (tags, GST_TAG_VIDEO_CODEC); + gst_tag_list_remove_tag (tags, GST_TAG_CODEC); + gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_ENCODER, "x264", + GST_TAG_ENCODER_VERSION, X264_BUILD, NULL); + /* push is done below */ break; /* no flushing if flush received, * buffers in encoder are considered (in the) past */ + } case GST_EVENT_CUSTOM_DOWNSTREAM:{ const GstStructure *s; s = gst_event_get_structure (event); -- 2.7.4