From 31b1a3dfabafaf6a450fb557733213ebd1c2887e Mon Sep 17 00:00:00 2001 From: Zaheer Abbas Merali Date: Tue, 15 Mar 2005 22:58:50 +0000 Subject: Add gstqueue patch that fixes mp3 skipping after a few secs. (#84864) (Portage version: 2.0.51.19) --- media-libs/gstreamer/ChangeLog | 7 +- media-libs/gstreamer/Manifest | 3 + .../gstreamer/files/digest-gstreamer-0.8.9-r3 | 1 + .../files/gstreamer-0.8.9-gstqueue_lock.patch | 106 ++++++++++++++++++++ media-libs/gstreamer/gstreamer-0.8.9-r3.ebuild | 108 +++++++++++++++++++++ 5 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 media-libs/gstreamer/files/digest-gstreamer-0.8.9-r3 create mode 100644 media-libs/gstreamer/files/gstreamer-0.8.9-gstqueue_lock.patch create mode 100644 media-libs/gstreamer/gstreamer-0.8.9-r3.ebuild (limited to 'media-libs') diff --git a/media-libs/gstreamer/ChangeLog b/media-libs/gstreamer/ChangeLog index e013391a1d1c..212a2cdcb53d 100644 --- a/media-libs/gstreamer/ChangeLog +++ b/media-libs/gstreamer/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog for media-libs/gstreamer # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/media-libs/gstreamer/ChangeLog,v 1.94 2005/03/09 03:50:35 obz Exp $ +# $Header: /var/cvsroot/gentoo-x86/media-libs/gstreamer/ChangeLog,v 1.95 2005/03/15 22:58:50 zaheerm Exp $ + +*gstreamer-0.8.9-r3 (15 Mar 2005) + + 15 Mar 2005; gstreamer-0.8.9-r3.ebuild: + Add gstqueue patch that fixes mp3 skipping after a few secs. (#84864) 09 Mar 2005; Mike Gardiner gstreamer-0.8.8.ebuild: Keyworded ppc diff --git a/media-libs/gstreamer/Manifest b/media-libs/gstreamer/Manifest index e1e6dfedcbaa..a6d0bfb8d934 100644 --- a/media-libs/gstreamer/Manifest +++ b/media-libs/gstreamer/Manifest @@ -1,6 +1,7 @@ MD5 ac832308ff65da62e5106207d991c87c gstreamer-0.8.1.ebuild 2182 MD5 fba41fba3e573b788bab61d24c36af1f gstreamer-0.8.9-r1.ebuild 2808 MD5 c88ad7799cd84d98f3eca6c03c39870d gstreamer-0.8.8.ebuild 2191 +MD5 737b9c0fa778ca5c00738cf96a07488e gstreamer-0.8.9-r3.ebuild 3012 MD5 c1a600f9c7419d5b41b50356a5210583 gstreamer-0.6.4.ebuild 1834 MD5 5e025d896f851f83d6fb44b6658b74a4 gstreamer-0.8.5.ebuild 2191 MD5 abf62d66d038341af9fd3f7baae1003a gstreamer-0.8.7.ebuild 2156 @@ -11,8 +12,10 @@ MD5 03ad2e6c4ab41244af1015a8bbb0b39f metadata.xml 158 MD5 d219e0115125181e4730a98f86ca463b files/digest-gstreamer-0.8.3-r1 69 MD5 7f5ad30642cb2c0af9d64ac11c9dabb2 files/digest-gstreamer-0.8.9-r1 69 MD5 7f5ad30642cb2c0af9d64ac11c9dabb2 files/digest-gstreamer-0.8.9-r2 69 +MD5 7f5ad30642cb2c0af9d64ac11c9dabb2 files/digest-gstreamer-0.8.9-r3 69 MD5 e74bc34fe33bd6c536feedd4ae91dcbc files/gstreamer-0.8-reiser4_register.patch 684 MD5 eb396dce225d8cbcae77d8c7a60cae55 files/gstreamer-0.8.9-64_dataprotocol.patch 557 +MD5 fd63f7bf7d7eacc104d81267e447fcab files/gstreamer-0.8.9-gstqueue_lock.patch 3975 MD5 c7cf43fd49b58741237224b5e48e188a files/gstreamer-0.8-unclobber_asm.patch 1164 MD5 465e9b8e2f33205128b7a69eca2e2c02 files/gstreamer-0.8.3-jade_fix.patch 1713 MD5 ff15475e2c782144d62016e6d37a99b4 files/digest-gstreamer-0.6.4 69 diff --git a/media-libs/gstreamer/files/digest-gstreamer-0.8.9-r3 b/media-libs/gstreamer/files/digest-gstreamer-0.8.9-r3 new file mode 100644 index 000000000000..242fc1b3b4e1 --- /dev/null +++ b/media-libs/gstreamer/files/digest-gstreamer-0.8.9-r3 @@ -0,0 +1 @@ +MD5 6769de224de8457ed0dc09016287883a gstreamer-0.8.9.tar.bz2 1456548 diff --git a/media-libs/gstreamer/files/gstreamer-0.8.9-gstqueue_lock.patch b/media-libs/gstreamer/files/gstreamer-0.8.9-gstqueue_lock.patch new file mode 100644 index 000000000000..b54bc02a02e7 --- /dev/null +++ b/media-libs/gstreamer/files/gstreamer-0.8.9-gstqueue_lock.patch @@ -0,0 +1,106 @@ +=================================================================== +RCS file: /cvs/gstreamer/gstreamer/gst/gstqueue.c,v +retrieving revision 1.117 +retrieving revision 1.117.2.2 +diff -u -r1.117 -r1.117.2.2 +--- gstqueue.c 2005/01/31 23:21:52 1.117 ++++ gstqueue.c 2005/03/03 09:56:26 1.117.2.2 +@@ -474,6 +474,8 @@ + static void + gst_queue_locked_flush (GstQueue * queue) + { ++ GST_CAT_LOG_OBJECT (queue_dataflow, queue, "Flushing contents..."); ++ + while (!g_queue_is_empty (queue->queue)) { + GstData *data = g_queue_pop_head (queue->queue); + +@@ -569,7 +571,9 @@ + + if (GST_IS_BUFFER (data)) + GST_CAT_LOG_OBJECT (queue_dataflow, queue, +- "adding buffer %p of size %d", data, GST_BUFFER_SIZE (data)); ++ "adding buffer %p of size %d and time %" GST_TIME_FORMAT, ++ data, GST_BUFFER_SIZE (data), ++ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (data))); + + /* We make space available if we're "full" according to whatever + * the user defined as "full". Note that this only applies to buffers. +@@ -657,11 +661,11 @@ + GstScheduler *sched; + + GST_CAT_DEBUG_OBJECT (queue_dataflow, queue, "interrupted"); +- GST_QUEUE_MUTEX_UNLOCK; + sched = gst_pad_get_scheduler (queue->sinkpad); + if (!sched || gst_scheduler_interrupt (sched, GST_ELEMENT (queue))) { +- goto out_unref; ++ goto ignore_interrupt; + } ++ GST_QUEUE_MUTEX_UNLOCK; + /* if we got here because we were unlocked after a + * flush, we don't need to add the buffer to the + * queue again */ +@@ -693,6 +697,7 @@ + } + } + ++ ignore_interrupt: + /* OK, we've got a serious issue here. Imagine the situation + * where the puller (next element) is sending an event here, + * so it cannot pull events from the queue, and we cannot +@@ -701,9 +706,16 @@ + * that, we handle pending upstream events here, too. */ + gst_queue_handle_pending_events (queue); + +- STATUS (queue, "waiting for item_del signal from thread using qlock"); +- g_cond_wait (queue->item_del, queue->qlock); +- STATUS (queue, "received item_del signal from thread using qlock"); ++ if (!queue->interrupt) { ++ STATUS (queue, ++ "waiting for item_del signal from thread using qlock"); ++ g_cond_wait (queue->item_del, queue->qlock); ++ STATUS (queue, "received item_del signal from thread using qlock"); ++ } else { ++ GST_CAT_DEBUG_OBJECT (queue_dataflow, queue, ++ "Not waiting, just adding buffer, after interrupt (bad!)"); ++ break; ++ } + } + + STATUS (queue, "post-full wait"); +@@ -848,6 +860,9 @@ + queue->cur_level.bytes -= GST_BUFFER_SIZE (data); + if (GST_BUFFER_DURATION (data) != GST_CLOCK_TIME_NONE) + queue->cur_level.time -= GST_BUFFER_DURATION (data); ++ GST_CAT_LOG_OBJECT (queue_dataflow, queue, ++ "Got buffer of time %" GST_TIME_FORMAT, ++ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (data))); + } + + /* Now that we're done, we can lose our own reference to +@@ -947,6 +962,7 @@ + if (GST_EVENT_SEEK_FLAGS (event) & GST_SEEK_FLAG_FLUSH) { + gst_queue_locked_flush (queue); + } ++ break; + default: + break; + } +@@ -974,10 +990,16 @@ + /* FIXME: this code assumes that there's no discont in the queue */ + switch (*fmt) { + case GST_FORMAT_BYTES: +- *value -= queue->cur_level.bytes; ++ if (*value >= queue->cur_level.bytes) ++ *value -= queue->cur_level.bytes; ++ else ++ *value = 0; + break; + case GST_FORMAT_TIME: +- *value -= queue->cur_level.time; ++ if (*value >= queue->cur_level.time) ++ *value -= queue->cur_level.time; ++ else ++ *value = 0; + break; + default: + /* FIXME */ diff --git a/media-libs/gstreamer/gstreamer-0.8.9-r3.ebuild b/media-libs/gstreamer/gstreamer-0.8.9-r3.ebuild new file mode 100644 index 000000000000..377316499b9f --- /dev/null +++ b/media-libs/gstreamer/gstreamer-0.8.9-r3.ebuild @@ -0,0 +1,108 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/media-libs/gstreamer/gstreamer-0.8.9-r3.ebuild,v 1.1 2005/03/15 22:58:50 zaheerm Exp $ + +inherit eutils flag-o-matic libtool gnome2 flag-o-matic + +# Create a major/minor combo for our SLOT and executables suffix +PVP=(${PV//[-\._]/ }) +PV_MAJ_MIN=${PVP[0]}.${PVP[1]} + +DESCRIPTION="Streaming media framework" +HOMEPAGE="http://gstreamer.sourceforge.net" +SRC_URI="http://gstreamer.freedesktop.org/src/gstreamer/${P}.tar.bz2" + +LICENSE="LGPL-2" +SLOT=${PV_MAJ_MIN} +KEYWORDS="~x86 ~ppc ~sparc ~alpha ~hppa ~amd64 ~ia64 ~mips ~ppc64 ~arm" +IUSE="doc" + +RDEPEND=">=dev-libs/glib-2.2 + >=dev-libs/libxml2-2.4.9 + >=dev-libs/popt-1.6.3" + +DEPEND="${RDEPEND} + >=sys-devel/gettext-0.11.5 + dev-util/pkgconfig + doc? ( dev-util/gtk-doc + =app-text/docbook-xml-dtd-4.2* )" + +src_unpack() { + + unpack ${A} + cd ${S} + + # Fix doc generation with jade. See bug #55700. + epatch ${FILESDIR}/${PN}-0.8.3-jade_fix.patch + cd ${S}/libs/gst/dataprotocol + # fix dataprotocol bug + epatch ${FILESDIR}/${P}-64_dataprotocol.patch + # fix queue locking bug - fixes bug #84864 + cd ${S}/gst + epatch ${FILESDIR}/${P}-gstqueue_lock.patch + +} + +src_compile() { + + # FIXME : Ugly fix for docs generation gst cache problem (#57002) + use doc && addpredict /var && addpredict /root + + elibtoolize + + strip-flags + replace-flags "-O3" "-O2" + replace-flags "-Os" "-O2" + + econf \ + --with-configdir=/etc/gstreamer \ + --disable-tests \ + --disable-examples \ + `use_enable doc docs-build` \ + || die "./configure failed" + + # On alpha, amd64 and hppa some innocuous warnings are spit out that break + # the build because of -Werror + use alpha && find . -name Makefile | xargs sed -i -e 's/-Werror//g' + use amd64 && find . -name Makefile | xargs sed -i -e 's/-Werror//g' + use hppa && find . -name Makefile | xargs sed -i -e 's/-Werror//g' + + emake || die "compile failed" + +} + +src_install() { + + make DESTDIR=${D} install || die + + # remove the unversioned binaries gstreamer provide + # this is to prevent these binaries to be owned by several SLOTs + cd ${D}/usr/bin + for gst_bins in `ls *-${PV_MAJ_MIN}` + do + rm ${gst_bins/-${PV_MAJ_MIN}/} + einfo "Removed ${gst_bins/-${PV_MAJ_MIN}/}" + done + + cd ${S} + dodoc AUTHORS ChangeLog COPYING* DEVEL \ + NEWS README RELEASE REQUIREMENTS TODO + + dodir /etc/env.d/ + echo "PRELINK_PATH_MASK=/usr/lib/${PN}-${PV_MAJ_MIN}" > ${D}/etc/env.d/60${PN}-${PV_MAJ_MIN} + +} + +pkg_postinst() { + + gst-register-${PV_MAJ_MIN} + + einfo "Gstreamer has known problems with prelinking, as a workaround" + einfo "this ebuild adds the gstreamer plugins to the prelink mask" + einfo "path to stop them from being prelinked. It is imperative" + einfo "that you undo & redo prelinking after building this pack for" + einfo "this to take effect. Make sure the gstreamer lib path is indeed" + einfo "added to the PRELINK_PATH_MASK environment variable." + einfo "For more information see http://bugs.gentoo.org/show_bug.cgi?id=81512" + +} -- cgit v1.2.3-65-gdbad