diff options
author | ghost <andreas.monzner@multimedia-labs.de> | 2009-06-23 16:20:00 +0200 |
---|---|---|
committer | ghost <andreas.monzner@multimedia-labs.de> | 2009-06-23 16:20:00 +0200 |
commit | 777ff5fad58b7ff4ec854e678cca5382ebb8a386 (patch) | |
tree | 83be3277dd1bbc605ab075bc44f1cb8a0118fdc8 | |
parent | a80c9580d4ff2f6fffc25cace6b403dd2b789afc (diff) | |
download | openembedded-777ff5fad58b7ff4ec854e678cca5382ebb8a386.tar.gz |
gst-plugins-good_0.10.14.bb: backport matroskademux memleak fix
-rw-r--r-- | packages/gstreamer/gst-plugins-good/backport_matroskademux_memleak_fix.patch | 72 | ||||
-rw-r--r-- | packages/gstreamer/gst-plugins-good_0.10.14.bb | 4 |
2 files changed, 75 insertions, 1 deletions
diff --git a/packages/gstreamer/gst-plugins-good/backport_matroskademux_memleak_fix.patch b/packages/gstreamer/gst-plugins-good/backport_matroskademux_memleak_fix.patch new file mode 100644 index 0000000000..214fb94358 --- /dev/null +++ b/packages/gstreamer/gst-plugins-good/backport_matroskademux_memleak_fix.patch @@ -0,0 +1,72 @@ +diff -Naur org/gst/matroska/matroska-demux.c gst-plugins-good-0.10.14/gst/matroska/matroska-demux.c +--- org/gst/matroska/matroska-demux.c 2009-06-23 16:13:25.000000000 +0200 ++++ gst-plugins-good-0.10.14/gst/matroska/matroska-demux.c 2009-06-23 16:12:20.000000000 +0200 +@@ -856,6 +856,8 @@ + + g_return_val_if_fail (GST_IS_BUFFER (buf), NULL); + ++ GST_DEBUG ("decoding buffer %p", buf); ++ + data = GST_BUFFER_DATA (buf); + size = GST_BUFFER_SIZE (buf); + +@@ -873,6 +875,7 @@ + + return buf; + } else { ++ GST_DEBUG ("decode data failed"); + gst_buffer_unref (buf); + return NULL; + } +@@ -3911,6 +3914,10 @@ + guint64 num; + guint8 *data; + ++ if (buf) { ++ gst_buffer_unref (buf); ++ buf = NULL; ++ } + if ((ret = gst_ebml_read_buffer (ebml, &id, &buf)) != GST_FLOW_OK) + break; + +@@ -4163,6 +4170,7 @@ + + sub = gst_buffer_create_sub (buf, + GST_BUFFER_SIZE (buf) - size, lace_size[n]); ++ GST_WARNING_OBJECT (demux, "created subbuffer %p", sub); + + if (stream->encodings != NULL && stream->encodings->len > 0) + sub = gst_matroska_decode_buffer (stream, sub); +@@ -4192,7 +4200,6 @@ + + gst_matroska_demux_sync_streams (demux); + +- + if (duration) { + GST_BUFFER_DURATION (sub) = duration / laces; + stream->pos += GST_BUFFER_DURATION (sub); +@@ -4216,6 +4223,7 @@ + && stream->set_discont) { + /* When doing seeks or such, we need to restart on key frames or + * decoders might choke. */ ++ gst_buffer_unref(sub); + goto done; + } + +@@ -4235,6 +4243,7 @@ + + /* Postprocess the buffers depending on the codec used */ + if (stream->postprocess_frame) { ++ GST_LOG_OBJECT (demux, "running post process"); + ret = stream->postprocess_frame (GST_ELEMENT (demux), stream, &sub); + } + +@@ -4252,7 +4261,7 @@ + } + + done: +- if (readblock) ++ if (buf) + gst_buffer_unref (buf); + g_free (lace_size); + diff --git a/packages/gstreamer/gst-plugins-good_0.10.14.bb b/packages/gstreamer/gst-plugins-good_0.10.14.bb index cd653aa617..f50e8e5481 100644 --- a/packages/gstreamer/gst-plugins-good_0.10.14.bb +++ b/packages/gstreamer/gst-plugins-good_0.10.14.bb @@ -1,3 +1,5 @@ require gst-plugins.inc -SRC_URI += "file://sed-with-autoconf-2.59.patch;patch=1;pnum=1" +SRC_URI += "file://sed-with-autoconf-2.59.patch;patch=1;pnum=1 \ + file://backport_matroskademux_memleak_fix.patch;patch=1;pnum=1" +PR = "r1" DEPENDS += "gst-plugins-base" |