From e6d0435a8ed722ba1d61b1c2d56a26c1b6fc5ff8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Thu, 23 Dec 2010 22:01:00 +0000 Subject: [PATCH] mpeg4videoparse: try harder to make buffer metadata writable before modifying Also, check buffer for NULL-ness before dereferencing it. https://bugzilla.gnome.org/show_bug.cgi?id=637824 --- gst/mpeg4videoparse/mpeg4videoparse.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gst/mpeg4videoparse/mpeg4videoparse.c b/gst/mpeg4videoparse/mpeg4videoparse.c index d23f2cc1fd..254db9fb7d 100644 --- a/gst/mpeg4videoparse/mpeg4videoparse.c +++ b/gst/mpeg4videoparse/mpeg4videoparse.c @@ -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;