diff options
author | ghost <andreas.monzner@multimedia-labs.de> | 2009-09-10 17:11:01 +0200 |
---|---|---|
committer | ghost <andreas.monzner@multimedia-labs.de> | 2009-09-10 17:11:01 +0200 |
commit | 83eb51ead4747e175623ca6d7635f71ec305dab1 (patch) | |
tree | fbbe52a941e19fbb8cd71c8dd24f8c0bce413cf5 | |
parent | 0038144fc728485637401110b90ac87f854017ef (diff) | |
download | openembedded-83eb51ead4747e175623ca6d7635f71ec305dab1.tar.gz |
packages/gstreamer: update plugins-good and plugins-bad, move patches to right folder, mpegpsdemux speedup
-rw-r--r-- | packages/gstreamer/gst-plugins-bad/mpegpsdemux_speedup.diff | 95 | ||||
-rw-r--r-- | packages/gstreamer/gst-plugins-bad_0.10.14.bb (renamed from packages/gstreamer/gst-plugins-bad_0.10.13.bb) | 4 | ||||
-rw-r--r-- | packages/gstreamer/gst-plugins-base/playsink-textsink.diff (renamed from packages/gstreamer/files/playsink-textsink.diff) | 0 | ||||
-rw-r--r-- | packages/gstreamer/gst-plugins-base/playsink_fix_double_refcount.patch (renamed from packages/gstreamer/files/playsink_fix_double_refcount.patch) | 0 | ||||
-rw-r--r-- | packages/gstreamer/gst-plugins-good/backport_matroskademux_memleak_fix.patch | 86 | ||||
-rw-r--r-- | packages/gstreamer/gst-plugins-good/gst-plugins-good_configure_skip_shave.patch (renamed from packages/gstreamer/files/gst-plugins-good_configure_skip_shave.patch) | 0 | ||||
-rw-r--r-- | packages/gstreamer/gst-plugins-good_0.10.16.bb (renamed from packages/gstreamer/gst-plugins-good_0.10.15.bb) | 4 |
7 files changed, 100 insertions, 89 deletions
diff --git a/packages/gstreamer/gst-plugins-bad/mpegpsdemux_speedup.diff b/packages/gstreamer/gst-plugins-bad/mpegpsdemux_speedup.diff new file mode 100644 index 0000000000..0103cecc33 --- /dev/null +++ b/packages/gstreamer/gst-plugins-bad/mpegpsdemux_speedup.diff @@ -0,0 +1,95 @@ +--- gst/mpegdemux/gstmpegdemux.c 2009-08-11 00:50:05.000000000 +0200 ++++ gst/mpegdemux/gstmpegdemux.c 2009-09-10 11:31:04.000000000 +0200 +@@ -310,7 +309,10 @@ + if (stream != NULL) { + if (stream->pad) + gst_element_remove_pad (GST_ELEMENT_CAST (demux), stream->pad); +- ++ if (stream->buf) ++ free(stream->buf); ++ if (stream->meta_buf) ++ gst_buffer_unref(stream->meta_buf); + g_free (stream); + demux->streams[i] = NULL; + } +@@ -427,6 +429,15 @@ + stream->type = stream_type; + stream->pad = gst_pad_new_from_template (template, name); + stream->segment_thresh = threshold; ++ ++ if (threshold == VIDEO_SEGMENT_THRESHOLD) { ++ stream->buf = malloc(64*1024); ++ stream->buf_pos = 0; ++ stream->meta_buf = gst_buffer_new(); ++ } ++ else ++ stream->buf = 0; ++ + gst_pad_set_event_function (stream->pad, + GST_DEBUG_FUNCPTR (gst_flups_demux_src_event)); + gst_pad_set_query_function (stream->pad, +@@ -478,6 +488,7 @@ + GstFlowReturn result; + guint64 timestamp; + guint size; ++ gboolean sent = FALSE; + + if (stream == NULL) + goto no_stream; +@@ -580,11 +591,38 @@ + demux->next_pts = G_MAXUINT64; + demux->next_dts = G_MAXUINT64; + +- result = gst_pad_push (stream->pad, buf); +- GST_DEBUG_OBJECT (demux, "pushed stream id 0x%02x type 0x%02x, time: %" +- GST_TIME_FORMAT ", size %d. result: %s", +- stream->id, stream->type, GST_TIME_ARGS (timestamp), +- size, gst_flow_get_name (result)); ++ if (stream->buf && stream->buf_pos && (timestamp != GST_CLOCK_TIME_NONE || stream->buf_pos+size > 64*1024)) { ++ GstBuffer *tmp = gst_buffer_new_and_alloc(stream->buf_pos); ++ gst_buffer_copy_metadata(tmp, stream->meta_buf, GST_BUFFER_COPY_ALL); ++ GST_BUFFER_SIZE(tmp) = stream->buf_pos; ++ memcpy(GST_BUFFER_DATA(tmp), stream->buf, stream->buf_pos); ++ result = gst_pad_push (stream->pad, tmp); ++ GST_DEBUG_OBJECT (demux, "pushed stream id 0x%02x type 0x%02x, time: %" ++ GST_TIME_FORMAT ", size %d. result: %s", ++ stream->id, stream->type, GST_TIME_ARGS (timestamp), ++ stream->buf_pos, gst_flow_get_name (result)); ++ stream->buf_pos = 0; ++ sent = TRUE; ++ } ++ ++ if (!stream->buf || size > 64*1024) { ++ result = gst_pad_push (stream->pad, buf); ++ GST_DEBUG_OBJECT (demux, "pushed stream id 0x%02x type 0x%02x, time: %" ++ GST_TIME_FORMAT ", size %d. result: %s", ++ stream->id, stream->type, GST_TIME_ARGS (timestamp), ++ size, gst_flow_get_name (result)); ++ } ++ else { ++ if (!stream->buf_pos) ++ gst_buffer_copy_metadata(stream->meta_buf, buf, GST_BUFFER_COPY_ALL); ++ ++ memcpy(stream->buf + stream->buf_pos, GST_BUFFER_DATA(buf), size); ++ stream->buf_pos += size; ++ gst_buffer_unref(buf); ++ ++ if (!sent) ++ result = GST_FLOW_OK; ++ } + + return result; + +--- gst/mpegdemux/gstmpegdemux.h 2009-08-11 00:50:05.000000000 +0200 ++++ gst/mpegdemux/gstmpegdemux.h 2009-09-10 11:27:46.000000000 +0200 +@@ -93,6 +93,10 @@ + gboolean discont; + gboolean notlinked; + gboolean need_segment; ++ ++ GstBuffer *meta_buf; ++ unsigned char *buf; ++ size_t buf_pos; + }; + + struct _GstFluPSDemux diff --git a/packages/gstreamer/gst-plugins-bad_0.10.13.bb b/packages/gstreamer/gst-plugins-bad_0.10.14.bb index 2b267bdba6..6f3e8e13d4 100644 --- a/packages/gstreamer/gst-plugins-bad_0.10.13.bb +++ b/packages/gstreamer/gst-plugins-bad_0.10.14.bb @@ -3,4 +3,6 @@ DEPENDS += "gst-plugins-base" EXTRA_OECONF += "--disable-apexsink --disable-dvdnav" RCONFLICTS_gst-plugin-mpegdemux = "gst-plugin-fluendo-mpegdemux" RREPLACES_gst-plugin-mpegdemux = "gst-plugin-fluendo-mpegdemux" -SRC_URI += "file://gst-plugins_configure_skip_shave.patch;patch=1;pnum=0" +SRC_URI += "file://gst-plugins_configure_skip_shave.patch;patch=1;pnum=0 \ + file://mpegpsdemux_speedup.diff;patch=1;pnum=0" +PR = "r0" diff --git a/packages/gstreamer/files/playsink-textsink.diff b/packages/gstreamer/gst-plugins-base/playsink-textsink.diff index 46dd64a169..46dd64a169 100644 --- a/packages/gstreamer/files/playsink-textsink.diff +++ b/packages/gstreamer/gst-plugins-base/playsink-textsink.diff diff --git a/packages/gstreamer/files/playsink_fix_double_refcount.patch b/packages/gstreamer/gst-plugins-base/playsink_fix_double_refcount.patch index ac26b50589..ac26b50589 100644 --- a/packages/gstreamer/files/playsink_fix_double_refcount.patch +++ b/packages/gstreamer/gst-plugins-base/playsink_fix_double_refcount.patch diff --git a/packages/gstreamer/gst-plugins-good/backport_matroskademux_memleak_fix.patch b/packages/gstreamer/gst-plugins-good/backport_matroskademux_memleak_fix.patch deleted file mode 100644 index d4edc88ade..0000000000 --- a/packages/gstreamer/gst-plugins-good/backport_matroskademux_memleak_fix.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 9600c549380d97f79e7a948a3367962405c93f05 Mon Sep 17 00:00:00 2001 -From: Wim Taymans <wim.taymans@collabora.co.uk> -Date: Tue, 23 Jun 2009 10:42:33 +0000 -Subject: matroskademux: avoid leaking buffers - -Don't leak buffers when resyncing to a keyframe. -Avoid leaking buffers when exiting the loop on error conditions. -Add some more debug info. - -Fixes #585911 ---- -diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c -index 5c12482..0737175 100644 ---- a/gst/matroska/matroska-demux.c -+++ b/gst/matroska/matroska-demux.c -@@ -873,6 +873,8 @@ gst_matroska_decode_buffer (GstMatroskaTrackContext * context, GstBuffer * buf) - - 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); - -@@ -890,6 +892,7 @@ gst_matroska_decode_buffer (GstMatroskaTrackContext * context, GstBuffer * buf) - - return buf; - } else { -+ GST_DEBUG ("decode data failed"); - gst_buffer_unref (buf); - return NULL; - } -@@ -4010,6 +4013,10 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, - 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; - -@@ -4272,6 +4279,7 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, - - 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); -@@ -4301,7 +4309,6 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, - - gst_matroska_demux_sync_streams (demux); - -- - if (duration) { - GST_BUFFER_DURATION (sub) = duration / laces; - stream->pos += GST_BUFFER_DURATION (sub); -@@ -4326,6 +4333,7 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, - /* When doing seeks or such, we need to restart on key frames or - * decoders might choke. */ - GST_DEBUG_OBJECT (demux, "skipping delta unit"); -+ gst_buffer_unref (sub); - goto done; - } - -@@ -4361,6 +4369,7 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, - - /* 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); - } - -@@ -4378,7 +4387,7 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, - } - - done: -- if (readblock) -+ if (buf) - gst_buffer_unref (buf); - g_free (lace_size); - --- -cgit v0.8.2 diff --git a/packages/gstreamer/files/gst-plugins-good_configure_skip_shave.patch b/packages/gstreamer/gst-plugins-good/gst-plugins-good_configure_skip_shave.patch index 4e4550efcd..4e4550efcd 100644 --- a/packages/gstreamer/files/gst-plugins-good_configure_skip_shave.patch +++ b/packages/gstreamer/gst-plugins-good/gst-plugins-good_configure_skip_shave.patch diff --git a/packages/gstreamer/gst-plugins-good_0.10.15.bb b/packages/gstreamer/gst-plugins-good_0.10.16.bb index a134540f89..19de0e9f15 100644 --- a/packages/gstreamer/gst-plugins-good_0.10.15.bb +++ b/packages/gstreamer/gst-plugins-good_0.10.16.bb @@ -1,5 +1,5 @@ require gst-plugins.inc DEPENDS += "gst-plugins-base" SRC_URI += "file://sed-with-autoconf-2.59.patch;patch=1;pnum=1 \ - file://gst-plugins-good_configure_skip_shave.patch;patch=1;pnum=0 \ - file://backport_matroskademux_memleak_fix.patch;patch=1;pnum=1" + file://gst-plugins-good_configure_skip_shave.patch;patch=1;pnum=0" +PR = "r0"
\ No newline at end of file |