mpegvideoparse: Make sure the buffer is writable before we add the MPEG video meta
authorSebastian Dröge <slomo@circular-chaos.org>
Fri, 14 Jun 2013 12:52:07 +0000 (14:52 +0200)
committerSebastian Dröge <slomo@circular-chaos.org>
Fri, 14 Jun 2013 12:53:52 +0000 (14:53 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=702174

gst/videoparsers/gstmpegvideoparse.c

index dfb0f41..4ec3bb4 100644 (file)
@@ -894,6 +894,8 @@ gst_mpegv_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
   frame->flags |= GST_BASE_PARSE_FRAME_FLAG_CLIP;
 
   if (mpvparse->send_mpeg_meta) {
+    GstBuffer *buf;
+
     if (mpvparse->seqhdr_updated)
       seq_hdr = &mpvparse->sequencehdr;
     if (mpvparse->seqext_updated)
@@ -909,10 +911,16 @@ gst_mpegv_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
     GST_DEBUG_OBJECT (mpvparse,
         "Adding GstMpegVideoMeta (slice_count:%d, slice_offset:%d)",
         mpvparse->slice_count, mpvparse->slice_offset);
+
+    if (frame->out_buffer) {
+      buf = frame->out_buffer = gst_buffer_make_writable (frame->out_buffer);
+    } else {
+      buf = frame->buffer = gst_buffer_make_writable (frame->buffer);
+    }
+
     meta =
-        gst_buffer_add_mpeg_video_meta (frame->out_buffer ? frame->
-        out_buffer : frame->buffer, seq_hdr, seq_ext, disp_ext, pic_hdr,
-        pic_ext, quant_ext);
+        gst_buffer_add_mpeg_video_meta (buf, seq_hdr, seq_ext, disp_ext,
+        pic_hdr, pic_ext, quant_ext);
     meta->num_slices = mpvparse->slice_count;
     meta->slice_offset = mpvparse->slice_offset;
   }