mpeg4videoparse: try harder to make buffer metadata writable before modifying
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Thu, 23 Dec 2010 22:01:00 +0000 (22:01 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Thu, 23 Dec 2010 22:03:16 +0000 (22:03 +0000)
Also, check buffer for NULL-ness before dereferencing it.

https://bugzilla.gnome.org/show_bug.cgi?id=637824

gst/mpeg4videoparse/mpeg4videoparse.c

index d23f2cc..254db9f 100644 (file)
@@ -502,10 +502,11 @@ gst_mpeg4vparse_push (GstMpeg4VParse * parse, gsize size)
     GstBuffer *out_buf;
 
     out_buf = gst_adapter_take_buffer (parse->adapter, parse->offset);
-    out_buf = gst_buffer_make_metadata_writable (out_buf);
-    GST_BUFFER_TIMESTAMP (out_buf) = parse->timestamp;
 
     if (G_LIKELY (out_buf)) {
+      out_buf = gst_buffer_make_metadata_writable (out_buf);
+      GST_BUFFER_TIMESTAMP (out_buf) = parse->timestamp;
+
       /* Set GST_BUFFER_FLAG_DELTA_UNIT if it's not an intra frame */
       if (!parse->intra_frame) {
         GST_BUFFER_FLAG_SET (out_buf, GST_BUFFER_FLAG_DELTA_UNIT);
@@ -540,10 +541,10 @@ gst_mpeg4vparse_push (GstMpeg4VParse * parse, gsize size)
 
           /* insert header */
           superbuf = gst_buffer_merge (parse->config, out_buf);
-
-          GST_BUFFER_TIMESTAMP (superbuf) = timestamp;
           gst_buffer_unref (out_buf);
-          out_buf = superbuf;
+
+          out_buf = gst_buffer_make_metadata_writable (superbuf);
+          GST_BUFFER_TIMESTAMP (out_buf) = timestamp;
 
           if (G_UNLIKELY (timestamp != -1)) {
             parse->last_report = timestamp;