--- gst-plugins-base0.10-0.10.25.orig/debian/maint +++ gst-plugins-base0.10-0.10.25/debian/maint @@ -0,0 +1,13 @@ +#!/usr/bin/make -f + +missing: + make -f debian/rules list-missing + +missing-so: + make -f debian/rules list-missing | grep so$$ | cut -c 2- + +missing-libs: + for i in `make -f debian/rules list-missing | grep so$$ | cut -c 2-`; do echo "=== $$i ==="; ldd debian/tmp/$$i; echo; done + +.PHONY: missing missing-so missing-libs + --- gst-plugins-base0.10-0.10.25.orig/debian/watch +++ gst-plugins-base0.10-0.10.25/debian/watch @@ -0,0 +1,2 @@ +version=2 +http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-(0\.10\..*)\.tar\.gz --- gst-plugins-base0.10-0.10.25.orig/debian/gstreamer-plugins-base-apps.manpages +++ gst-plugins-base0.10-0.10.25/debian/gstreamer-plugins-base-apps.manpages @@ -0,0 +1 @@ +debian/tmp/usr/share/man/man1/gst-visualise-@GST_ABI@.1 --- gst-plugins-base0.10-0.10.25.orig/debian/gstreamer-plugins-base.install +++ gst-plugins-base0.10-0.10.25/debian/gstreamer-plugins-base.install @@ -0,0 +1,26 @@ +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstadder.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstapp.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstaudioconvert.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstaudiorate.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstaudioresample.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstaudiotestsrc.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstcdparanoia.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstdecodebin.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstdecodebin2.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstffmpegcolorspace.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstgdp.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstgio.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstlibvisual.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstogg.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstplaybin.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstqueue2.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstsubparse.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgsttcp.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgsttheora.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgsttypefindfunctions.so +@video4linux@ +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstvideorate.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstvideoscale.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstvideotestsrc.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstvolume.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstvorbis.so --- gst-plugins-base0.10-0.10.25.orig/debian/mk.control +++ gst-plugins-base0.10-0.10.25/debian/mk.control @@ -0,0 +1,16 @@ +#!/usr/bin/perl -w + +open BUILDDEPS, "debian/build-deps"; +@builddeplist = ; +close BUILDDEPS; + +chomp(@builddeplist); +$builddeps = join(", ", @builddeplist); + +open CONTROLIN, "debian/control.in"; + +while(){ + s/BUILDDEPS/$builddeps/; + print; +} + --- gst-plugins-base0.10-0.10.25.orig/debian/build-deps.in +++ gst-plugins-base0.10-0.10.25/debian/build-deps.in @@ -0,0 +1,31 @@ +@GST_LIB_DEV_DEP@ +@GST_EXTRA_BUILD_DEPENDS@ +autotools-dev +cdbs (>= 0.4.20) +debhelper (>= 5) +gnome-pkg-tools (>= 0.7) +pkg-config (>= 0.11.0) +libxv-dev (>= 6.8.2.dfsg.1-3) +libxt-dev (>= 6.8.2.dfsg.1-3) +libvorbis-dev (>= 1.0.0-2) +libcdparanoia-dev (>= 3.10.2) +libgnomevfs2-dev (>= 1:2.20.0-2) +liboil0.3-dev (>= 0.3.14) +libpango1.0-dev (>= 1.15.4) +libtheora-dev (>= 0.0.0.alpha5) +libglib2.0-dev (>= 2.16.0) +libxml2-dev (>= 2.4.23) +zlib1g-dev (>= 1:1.1.4) +gtk-doc-tools +type-handling (>= 0.2.14) +libvisual-0.4-dev (>= 0.4.0) +gstreamer-tools (>= 0.10.14) +dpkg-dev (>= 1.14.13) +lsb-release +libgtk2.0-dev (>= 2.12.0) +libglib2.0-doc +gstreamer0.10-doc +libgirepository1.0-dev (>= 0.6.3) +gobject-introspection (>= 0.6.3) +gobject-introspection-glib-2.0 (>= 0.6.3) +gobject-introspection-freedesktop (>= 0.6.3) --- gst-plugins-base0.10-0.10.25.orig/debian/rules +++ gst-plugins-base0.10-0.10.25/debian/rules @@ -0,0 +1,189 @@ +#!/usr/bin/make -f + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/rules/simple-patchsys.mk +include /usr/share/cdbs/1/class/gnome.mk +include /usr/share/cdbs/1/rules/utils.mk +include /usr/share/gnome-pkg-tools/1/rules/clean-la.mk + +export HOME=$(CURDIR)/fake-home + +CFLAGS += -Wno-error +CXXFLAGS += -Wno-error +LDFLAGS += -Wl,-z,defs -Wl,-O1 -Wl,--as-needed +DEB_MAKE_CHECK_TARGET = check || true + +# upstream version with epoch +gst_version := $(shell echo $(DEB_VERSION) | cut -d '-' -f 1) +gst_major := 0 +gst_minor := 10 +gst_abi := $(gst_major).$(gst_minor) +# gstreamer library package names +gst_lib := libgstreamer$(gst_abi)-0 +gst_lib_dev := libgstreamer$(gst_abi)-dev +# what gstreamer version is needed +gst_lib_dev_dep := $(gst_lib_dev) (>= 0.10.24.2) + +gst_pkgname := gstreamer$(gst_abi) +gst_deb_abi := $(gst_abi)-0 + +# gst-plugins-base library package names +gst_plugins_base_lib := libgstreamer-plugins-base$(gst_deb_abi) +gst_plugins_base_lib_dev := libgstreamer-plugins-base$(gst_abi)-dev +# gst-plugins-base library shlibs +gst_plugins_base_lib_dep := "$(gst_plugins_base_lib) (>= $(gst_version))" + +gst_extra_build_depends += libasound2-dev (>= 0.9.0) [@linux@] +gst_extra_build_depends += , libgudev-1.0-dev (>= 143) [@linux@] + +# debug package +DEB_DH_STRIP_ARGS += --dbg-package=$(gst_pkgname)-plugins-base-dbg + +DEB_COMPRESS_EXCLUDE = .sgml .devhelp .ps .pdf + +# disable all CPU specific optimizations in commands launched by this Makefile +# using liboil; this is to work around liboil related build failures which +# are not specially interesting to catch on buildds as these might run very +# specific hardware +OIL_CPU_FLAGS := 0 +export OIL_CPU_FLAGS + +# The plugins are basically the same. +# Link special names to a template file. +# still need "*.install" to be done by hand + +PLUGINS += gnomevfs plugins-base x +ifeq ($(DEB_HOST_ARCH_OS),linux) +PLUGINS += alsa +endif +VERSIONIZE += \ + plugins-base-apps.install \ + plugins-base-apps.manpages \ + plugins-base-doc.install \ + +ifeq ($(DEB_HOST_ARCH_OS),linux) +video4linux := debian/tmp/usr/lib/gstreamer-$(gst_abi)/libgstvideo4linux.so +endif + +# Let's decide the package name and url depending on the distribution +DISTRO = "$(shell lsb_release -si)" + +GST_PACKAGE_NAME := "GStreamer Base Plugins (unknown Debian derivative)" +GST_PACKAGE_ORIGIN="http://packages.qa.debian.org/gst-plugins-base$(gst_abi)" + +ifeq ($(DISTRO),"Debian") +GST_PACKAGE_NAME := "GStreamer Base Plugins (Debian)" +GST_PACKAGE_ORIGIN="http://packages.qa.debian.org/gst-plugins-base$(gst_abi)" +endif + +ifeq ($(DISTRO),"Ubuntu") +GST_PACKAGE_NAME := "GStreamer Base Plugins (Ubuntu)" +GST_PACKAGE_ORIGIN="https://launchpad.net/distros/ubuntu/+source/gst-plugins-base$(gst_abi)" +endif + + +# setup links for packages +pre-build:: + for p in $(PLUGINS); do \ + rm -f debian/$(gst_pkgname)-$$p.install; \ + cat debian/gstreamer-$$p.install | \ + sed 's/@GST_ABI@/$(gst_abi)/g' \ + | sed "s,@video4linux@,$(video4linux),g" \ + >debian/$(gst_pkgname)-$$p.install; \ + done + for f in $(VERSIONIZE); do \ + cat debian/gstreamer-$$f | \ + sed 's/@GST_ABI@/$(gst_abi)/g' \ + >debian/$(gst_pkgname)-$$f; \ + done + rm -f debian/libgstreamer-plugins-base$(gst_deb_abi).install + cat debian/libgstreamer-plugins-base.install | \ + sed 's/@GST_ABI@/$(gst_abi)/g' \ + >debian/libgstreamer-plugins-base$(gst_deb_abi).install + rm -f debian/libgstreamer-plugins-base$(gst_deb_abi).symbols + cp debian/libgstreamer-plugins-base.symbols \ + debian/libgstreamer-plugins-base$(gst_deb_abi).symbols + rm -f debian/libgstreamer-plugins-base$(gst_abi)-dev.install + cat debian/libgstreamer-plugins-base-dev.install | \ + sed 's/@GST_ABI@/$(gst_abi)/g' \ + >debian/libgstreamer-plugins-base$(gst_abi)-dev.install + +maint: debian/control + +debian/build-deps: debian/build-deps.in debian/rules + cat $< >$@ + +debian/control:: debian/control.in debian/build-deps debian/mk.control debian/rules debian/changelog force + perl debian/mk.control | \ + sed 's/@GST_VERSION@/$(gst_version)/g' | \ + sed 's/@GST_ABI@/$(gst_abi)/g' | \ + sed 's/@GST_PKGNAME@/$(gst_pkgname)/g' | \ + sed 's/@GST_LIB@/$(gst_lib)/g' | \ + sed 's/@GST_LIB_DEV@/$(gst_lib_dev)/g' | \ + sed 's/@GST_LIB_DEV_DEP@/$(gst_lib_dev_dep)/g' | \ + sed 's/@GST_PLUGINS_BASE_LIB@/$(gst_plugins_base_lib)/g' | \ + sed 's/@GST_PLUGINS_BASE_LIB_DEV@/$(gst_plugins_base_lib_dev)/g' | \ + sed "s/@GST_EXTRA_BUILD_DEPENDS@/$(gst_extra_build_depends)/g" | \ + sed "s/@linux@/`type-handling any linux-gnu`/g" >$@ + +DEB_CONFIGURE_EXTRA_FLAGS += \ + --disable-failing-tests \ + --disable-examples \ + --enable-DEBUG \ + --enable-debug \ + --enable-experimental \ + --with-package-name=$(GST_PACKAGE_NAME) \ + --with-package-origin=$(GST_PACKAGE_ORIGIN) \ + --with-install-plugins-helper="/usr/bin/gstreamer-codec-install" + +# only build the docs on arches which can +ifeq (,$(findstring $(DEB_HOST_ARCH),m68k arm armel)) +DEB_CONFIGURE_EXTRA_FLAGS += --enable-gtk-doc +endif + +clean:: + # get rid of the symlinks + for i in $(PLUGINS); do \ + rm -f debian/$(gst_pkgname)-$$i.install; \ + rm -f debian/$(gst_pkgname)-$$i.preinst; \ + done + for f in $(VERSIONIZE); do \ + rm -f debian/$(gst_pkgname)-$$f; \ + done + rm -f debian/libgstreamer-plugins-base$(gst_deb_abi).install + rm -f debian/libgstreamer-plugins-base$(gst_deb_abi).symbols + rm -f debian/libgstreamer-plugins-base$(gst_abi)-dev.install + -rm -rf $(CURDIR)/fake-home + +binary-post-install/$(gst_pkgname)-plugins-base-apps:: + dh_perl + +DEB_DH_MAKESHLIBS_ARGS_$(gst_plugins_base_lib) += -V $(gst_plugins_base_lib_dep) -- -c4 +DEB_INSTALL_DOCS_ALL += debian/README.Debian NEWS +DEB_SHLIBDEPS_INCLUDE += debian/libgstreamer-plugins-base$(gst_deb_abi)/usr/lib +# Disable inclusion of large upstream ChangeLog +DEB_INSTALL_CHANGELOGS_ALL := + +# override shlibs for libraries from this source before computing dependencies +# of packages generated from this source; we already have inter-dependencies +# expressed manually in the control file, we do not need the shlibs to add +# duplicates +# (this rule runs just before the dh_shlibdeps) +common-binary-fixup-arch:: + mkdir -p $(CURDIR)/fake-home + HOME=$(CURDIR)/fake-home \ + LD_LIBRARY_PATH=debian/libgstreamer-plugins-base0.10-0/usr/lib:$(LD_LIBRARY_PATH) \ + dh_gstscancodecs + -rm -f debian/shlibs.local + rm -rf $(CURDIR)/fake-home + cat debian/*/DEBIAN/shlibs | \ + sed -n -r -e 's/(([^ ]+: )?([^ ]+) ([^ ]+)) .*/\1/p' \ + >debian/shlibs.local + +# (this rules runs just after the dh_shlibdeps) +common-binary-predeb-arch:: + -rm -f debian/shlibs.local + +force: + +.PHONY: maint force --- gst-plugins-base0.10-0.10.25.orig/debian/gstreamer-alsa.install +++ gst-plugins-base0.10-0.10.25/debian/gstreamer-alsa.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstalsa.so --- gst-plugins-base0.10-0.10.25.orig/debian/control +++ gst-plugins-base0.10-0.10.25/debian/control @@ -0,0 +1,214 @@ +Source: gst-plugins-base0.10 +Section: libs +Priority: optional +Maintainer: Maintainers of GStreamer packages +Uploaders: David I. Lehn , + Loic Minier , + Sebastien Bacher , + Sebastian Dröge , + Sjoerd Simons +Build-Depends: libgstreamer0.10-dev (>= 0.10.24.2), libasound2-dev (>= 0.9.0) [alpha amd64 arm armeb armel avr32 hppa i386 i686 ia64 lpia m32r m68k mips mipsel powerpc ppc64 s390 s390x sh3 sh3eb sh4 sh4eb sparc] , libgudev-1.0-dev (>= 143) [alpha amd64 arm armeb armel avr32 hppa i386 i686 ia64 lpia m32r m68k mips mipsel powerpc ppc64 s390 s390x sh3 sh3eb sh4 sh4eb sparc], autotools-dev, cdbs (>= 0.4.20), debhelper (>= 5), gnome-pkg-tools (>= 0.7), pkg-config (>= 0.11.0), libxv-dev (>= 6.8.2.dfsg.1-3), libxt-dev (>= 6.8.2.dfsg.1-3), libvorbis-dev (>= 1.0.0-2), libcdparanoia-dev (>= 3.10.2), libgnomevfs2-dev (>= 1:2.20.0-2), liboil0.3-dev (>= 0.3.14), libpango1.0-dev (>= 1.15.4), libtheora-dev (>= 0.0.0.alpha5), libglib2.0-dev (>= 2.16.0), libxml2-dev (>= 2.4.23), zlib1g-dev (>= 1:1.1.4), gtk-doc-tools, type-handling (>= 0.2.14), libvisual-0.4-dev (>= 0.4.0), gstreamer-tools (>= 0.10.14), dpkg-dev (>= 1.14.13), lsb-release, libgtk2.0-dev (>= 2.12.0), libglib2.0-doc, gstreamer0.10-doc, libgirepository1.0-dev (>= 0.6.3), gobject-introspection (>= 0.6.3), gobject-introspection-glib-2.0 (>= 0.6.3), gobject-introspection-freedesktop (>= 0.6.3) +Standards-Version: 3.8.3 +Homepage: http://gstreamer.freedesktop.org + +Package: gstreamer0.10-plugins-base-apps +Architecture: any +Section: utils +Depends: ${misc:Depends}, + ${perl:Depends}, + gstreamer0.10-tools +Description: GStreamer helper programs from the "base" set + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains helper programs from the "base" set, an essential + exemplary set of elements. + +Package: gstreamer0.10-plugins-base-doc +Architecture: all +Section: doc +Depends: ${misc:Depends}, + libglib2.0-doc, + gstreamer0.10-doc +Description: GStreamer documentation for plugins from the "base" set + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This packages contains documentation for plugins from the "base" set, + an essential exemplary set of elements. + +Package: libgstreamer-plugins-base0.10-0 +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends} +Conflicts: totem-gstreamer (<= 2.17.92-0ubuntu1), + gstreamer0.10-pulseaudio (<< 0.10.16-1ubuntu3) +Suggests: libvisual-0.4-plugins, + gstreamer-codec-install | gnome-codec-install +Replaces: gobject-introspection-repository (<< 0.6.5-2) +Description: GStreamer libraries from the "base" set + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains libraries from the "base" set, an essential + exemplary set of elements. + +Package: libgstreamer-plugins-base0.10-dev +Architecture: any +Section: libdevel +Depends: ${misc:Depends}, + ${shlibs:Depends}, + libgstreamer-plugins-base0.10-0 (= ${binary:Version}), + libc6-dev | libc-dev, + pkg-config, + libgstreamer0.10-dev (>= 0.10.24.2), + libglib2.0-dev, + libxml2-dev +Replaces: gobject-introspection-repository (<< 0.6.5-2) +Description: GStreamer development files for libraries from the "base" set + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains development files for GStreamer libraries from + the "base" set, an essential exemplary set of elements. + +Package: gstreamer0.10-alsa +Architecture: alpha amd64 arm armeb armel avr32 hppa i386 i686 ia64 lpia m32r m68k mips mipsel powerpc ppc64 s390 s390x sh3 sh3eb sh4 sh4eb sparc +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends}, + libgstreamer-plugins-base0.10-0 (>= 0.10.25) +XB-GStreamer-Version: ${gstreamer:Version} +XB-GStreamer-Elements: ${gstreamer:Elements} +XB-GStreamer-URI-Sources: ${gstreamer:URISources} +XB-GStreamer-URI-Sinks: ${gstreamer:URISinks} +XB-GStreamer-Encoders: ${gstreamer:Encoders} +XB-GStreamer-Decoders: ${gstreamer:Decoders} +Provides: ${gstreamer:Provides} +Description: GStreamer plugin for ALSA + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains the GStreamer plugin for the ALSA library. ALSA + is the Advanced Linux Sound Architecture. + +Package: gstreamer0.10-gnomevfs +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends} +Recommends: libgnomevfs2-extra +XB-GStreamer-Version: ${gstreamer:Version} +XB-GStreamer-Elements: ${gstreamer:Elements} +XB-GStreamer-URI-Sources: ${gstreamer:URISources} +XB-GStreamer-URI-Sinks: ${gstreamer:URISinks} +XB-GStreamer-Encoders: ${gstreamer:Encoders} +XB-GStreamer-Decoders: ${gstreamer:Decoders} +Provides: ${gstreamer:Provides} +Description: GStreamer plugin for GnomeVFS + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains the GStreamer plugin to read from and write to + GnomeVFS URIs. GnomeVFS is the GNOME virtual file-system. + +Package: gstreamer0.10-plugins-base +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends}, + libgstreamer-plugins-base0.10-0 (>= 0.10.25) +Recommends: gvfs +Replaces: gstreamer0.10-plugins-bad (<< 0.10.3+cvs20060814-0ubuntu4) +XB-GStreamer-Version: ${gstreamer:Version} +XB-GStreamer-Elements: ${gstreamer:Elements} +XB-GStreamer-URI-Sources: ${gstreamer:URISources} +XB-GStreamer-URI-Sinks: ${gstreamer:URISinks} +XB-GStreamer-Encoders: ${gstreamer:Encoders} +XB-GStreamer-Decoders: ${gstreamer:Decoders} +Provides: ${gstreamer:Provides} +Description: GStreamer plugins from the "base" set + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains the GStreamer plugins from the "base" set, an + essential exemplary set of elements. + +Package: gstreamer0.10-plugins-base-dbg +Architecture: any +Section: debug +Priority: extra +Depends: gstreamer0.10-alsa (= ${binary:Version}) [alpha amd64 arm armeb armel avr32 hppa i386 i686 ia64 lpia m32r m68k mips mipsel powerpc ppc64 s390 s390x sh3 sh3eb sh4 sh4eb sparc], + gstreamer0.10-plugins-base (= ${binary:Version}), + gstreamer0.10-x (= ${binary:Version}), + libgstreamer-plugins-base0.10-0 (= ${binary:Version}), + ${misc:Depends} +Suggests: gstreamer0.10-gnomevfs (= ${binary:Version}) +Replaces: gstreamer0.10-plugins-bad-dbg (<< 0.10.3+cvs20060814-0ubuntu4) +Description: GStreamer plugins from the "base" set + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains unstripped shared libraries. It is provided primarily + to provide a backtrace with names in a debugger, this makes it somewhat + easier to interpret core dumps. The libraries are installed in + /usr/lib/debug and are automatically used by gdb. + +Package: gstreamer0.10-x +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends}, + libgstreamer-plugins-base0.10-0 (>= 0.10.25) +XB-GStreamer-Version: ${gstreamer:Version} +XB-GStreamer-Elements: ${gstreamer:Elements} +XB-GStreamer-URI-Sources: ${gstreamer:URISources} +XB-GStreamer-URI-Sinks: ${gstreamer:URISinks} +XB-GStreamer-Encoders: ${gstreamer:Encoders} +XB-GStreamer-Decoders: ${gstreamer:Decoders} +Provides: ${gstreamer:Provides} +Description: GStreamer plugins for X11 and Pango + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains the GStreamer plugins for X11 video output, both + for standard Xlib support and for the Xv extension, as well as the + plugin for Pango-based text rendering and overlay. + --- gst-plugins-base0.10-0.10.25.orig/debian/libgstreamer-plugins-base.install +++ gst-plugins-base0.10-0.10.25/debian/libgstreamer-plugins-base.install @@ -0,0 +1,15 @@ +debian/tmp/usr/lib/libgstaudio-0.10.so.* +debian/tmp/usr/lib/libgstapp-0.10.so.* +debian/tmp/usr/lib/libgstpbutils-0.10.so.* +debian/tmp/usr/lib/libgstcdda-0.10.so.* +debian/tmp/usr/lib/libgstfft-0.10.so.* +debian/tmp/usr/lib/libgstinterfaces-0.10.so.* +debian/tmp/usr/lib/libgstnetbuffer-0.10.so.* +debian/tmp/usr/lib/libgstriff-0.10.so.* +debian/tmp/usr/lib/libgstrtp-0.10.so.* +debian/tmp/usr/lib/libgstrtsp-0.10.so.* +debian/tmp/usr/lib/libgstsdp-0.10.so.* +debian/tmp/usr/lib/libgsttag-0.10.so.* +debian/tmp/usr/lib/libgstvideo-0.10.so.* +debian/tmp/usr/lib/girepository-* +debian/tmp/usr/share/locale --- gst-plugins-base0.10-0.10.25.orig/debian/copyright +++ gst-plugins-base0.10-0.10.25/debian/copyright @@ -0,0 +1,31 @@ +This package was debianized by David I. Lehn on +Mon, 15 Jan 2001 18:21:37 -0500. + +It was downloaded from http://gstreamer.net/ + +Upstream Authors: + + Erik Walthinsen + Wim Taymans + Richard Boulton + and many more... + +Copyright: + + This package is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian GNU/Linux systems, the complete text of the GNU Lesser General +Public License can be found in `/usr/share/common-licenses/LGPL'. + --- gst-plugins-base0.10-0.10.25.orig/debian/gstreamer-gnomevfs.install +++ gst-plugins-base0.10-0.10.25/debian/gstreamer-gnomevfs.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstgnomevfs.so --- gst-plugins-base0.10-0.10.25.orig/debian/gstreamer-x.install +++ gst-plugins-base0.10-0.10.25/debian/gstreamer-x.install @@ -0,0 +1,3 @@ +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstpango.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstximagesink.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstxvimagesink.so --- gst-plugins-base0.10-0.10.25.orig/debian/libgstreamer-plugins-base-dev.install +++ gst-plugins-base0.10-0.10.25/debian/libgstreamer-plugins-base-dev.install @@ -0,0 +1,4 @@ +debian/tmp/usr/include/gstreamer-@GST_ABI@/gst/*/*.h +debian/tmp/usr/lib/*.so +debian/tmp/usr/lib/pkgconfig/*.pc +debian/tmp/usr/share/gir-* --- gst-plugins-base0.10-0.10.25.orig/debian/gstreamer-plugins-base-doc.install +++ gst-plugins-base0.10-0.10.25/debian/gstreamer-plugins-base-doc.install @@ -0,0 +1 @@ +debian/tmp/usr/share/gtk-doc --- gst-plugins-base0.10-0.10.25.orig/debian/compat +++ gst-plugins-base0.10-0.10.25/debian/compat @@ -0,0 +1 @@ +5 --- gst-plugins-base0.10-0.10.25.orig/debian/changelog +++ gst-plugins-base0.10-0.10.25/debian/changelog @@ -0,0 +1,2221 @@ +gst-plugins-base0.10 (0.10.25-2ubuntu1.1) karmic-proposed; urgency=low + + * debian/patches/02_cddabasesrc-dont-set-track-on-device-set.patch: + + Patch from upstream GIT to no longer set the track to 1 every time a + device is set to fix CD playback in some media players (LP: #460535). + See https://bugzilla.gnome.org/show_bug.cgi?id=601104 + + -- Cody A.W. Somerville Tue, 10 Nov 2009 15:58:33 -0500 + +gst-plugins-base0.10 (0.10.25-2ubuntu1) karmic; urgency=low + + * backported upstream change to fix audio issues on track change + happening since recent updates and dvd playing issues + (lp: #456016, #456646) + * debian/patches/01_baseaudiosink-remove-pulsesink-hack.patch, + debian/control.in: + + Remove pulsesink hack to fix operation with pulsesink from + gst-plugins-good 0.10.16-4. + + -- Sebastien Bacher Wed, 21 Oct 2009 22:00:49 +0200 + +gst-plugins-base0.10 (0.10.25-2) experimental; urgency=low + + * debian/patches/0001-decodebin2-Only-use-the-object-lock-for-protecting-t.patch, + debian/patches/0002-decodebin2-Don-t-set-the-external-ghostpads-blocked-.patch, + debian/patches/0003-factorylist-Use-gst_caps_can_intersect-instead-of-_i.patch, + debian/patches/0004-decodebin2-Rewrite-autoplugging-and-how-groups-of-pa.patch, + debian/patches/0005-uridecodebin-Don-t-post-missing-plugin-messages-twic.patch, + debian/patches/0006-decodebin2-Use-the-iterate-internal-links-function-i.patch, + debian/patches/0007-decodebin2-Chains-with-an-exposed-endpad-are-complet.patch: + + Patches from upstream GIT/Bugzilla to fix automatic missing plugin + installation and many other issues. See + https://bugzilla.gnome.org/show_bug.cgi?id=596183 + + -- Sebastian Dröge Wed, 07 Oct 2009 09:15:28 +0200 + +gst-plugins-base0.10 (0.10.25-1) unstable; urgency=low + + * New upstream release, 'Standard disclaimers apply': + + debian/libgstreamer-plugins-base.symbols: + - Updated for the new version. + + -- Sebastian Dröge Mon, 05 Oct 2009 18:10:19 +0200 + +gst-plugins-base0.10 (0.10.24.4-1) experimental; urgency=low + + [ Loïc Minier ] + * Also disable doc building on armel. + + [ Sebastian Dröge ] + * debian/rules: + + Use libgudev on Linux for v4l device detection. + * New upstream pre-release. + + -- Sebastian Dröge Fri, 02 Oct 2009 07:42:27 +0200 + +gst-plugins-base0.10 (0.10.24.3-1) experimental; urgency=low + + * New upstream pre-release: + + debian/patches/01_introspection-pkgconfig.patch: + - Dropped, merged upstream. + + -- Sebastian Dröge Thu, 17 Sep 2009 07:14:35 +0200 + +gst-plugins-base0.10 (0.10.24.2-2) experimental; urgency=low + + * debian/rules: + + Set HOME to a fake home directory to prevent writing + to a non-writable buildd home which results in FTBFS. + + -- Sebastian Dröge Sun, 13 Sep 2009 11:30:27 +0200 + +gst-plugins-base0.10 (0.10.24.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/rules, + debian/build-deps.in: + - Update build dependencies. + + debian/libgstreamer-plugins-base0.10-0.symbols: + - Updated for the new version. + + debian/control.in, + debian/build-deps.in, + debian/libgstreamer-plugins-base.install, + debian/libgstreamer-plugins-base-dev.install: + - Enable GObject-Introspection support and ship the generated + files in the -dev and shared library package. + + debian/patches/11_fix_skew_clock_slaving.patch: + - Dropped, merged upstream. + * debian/control.in: + + Update Standards-Version to 3.8.3. + * debian/patches/01_introspection-pkgconfig.patch: + + Fix build system to actually find the pkg-config files + when building the introspection files. + + -- Sebastian Dröge Sat, 12 Sep 2009 12:56:53 +0200 + +gst-plugins-base0.10 (0.10.24-2) unstable; urgency=low + + * debian/patches/11_fix_skew_clock_slaving.patch: + + Added. Fixes resyncing in the skew clock slaving method, which caused + extra delays to be added to the pipeline. (From upstream git) + + -- Sjoerd Simons Thu, 10 Sep 2009 22:49:39 +0100 + +gst-plugins-base0.10 (0.10.24-1) unstable; urgency=low + + * New upstream release, 'Counting the days': + + debian/libgstreamer-plugins-base.symbols: + - Updated for the new release. + + debian/rules: + - Update GStreamer core build dependency to >= 0.10.24. + * debian/control.in: + + Updated Standards-Version to 3.8.2, no additional changes needed. + + -- Sebastian Dröge Wed, 05 Aug 2009 08:03:10 +0200 + +gst-plugins-base0.10 (0.10.23.4-1) experimental; urgency=low + + * New upstream pre-release: + + debian/libgstreamer-plugins-base.symbols: + - Updated for the new pre-release. + + -- Sebastian Dröge Fri, 24 Jul 2009 18:42:16 +0200 + +gst-plugins-base0.10 (0.10.23.3-1) experimental; urgency=low + + * New upstream pre-release: + + debian/libgstreamer-plugins-base.symbols: + - Updated for the new pre-release. + + -- Sebastian Dröge Tue, 21 Jul 2009 09:50:21 +0200 + +gst-plugins-base0.10 (0.10.23.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/build-deps.in, + debian/rules: + - Update build dependencies. + + debian/libgstreamer-plugins-base.symbols: + - Updated for the new API. + + debian/patches/01_playbin2-cdda-regression.patch: + - Dropped, merged upstream. + * debian/control.in: + + Updated Standards-Version to 3.8.2, no additional changes needed. + + -- Sebastian Dröge Thu, 16 Jul 2009 06:18:35 +0200 + +gst-plugins-base0.10 (0.10.23-4) UNRELEASED; urgency=low + + * debian/control.in: + + Fix section of debug package. + + -- Sebastian Dröge Thu, 18 Jun 2009 13:35:45 +0200 + +gst-plugins-base0.10 (0.10.23-3) unstable; urgency=low + + * debian/build-deps.in, + debian/control.in: + + (Build-) depend on libglib2.0-doc and gstreamer0.10-doc to + get correct cross references. + * debian/control.in: + + Add ${misc:Depends} everywhere. + + Let the -dbg package only suggest the gnomevfs package + as the GNOME metapackage now conflicts with the gnomevfs + package (Closes: #532469). + + -- Sebastian Dröge Wed, 17 Jun 2009 12:04:43 +0200 + +gst-plugins-base0.10 (0.10.23-2) unstable; urgency=low + + * debian/patches/01_playbin2-cdda-regression.patch: + + Fix a regression with cdda:// playback in playbin2. + Patch from upstream GIT. + + -- Sebastian Dröge Fri, 15 May 2009 07:03:35 +0200 + +gst-plugins-base0.10 (0.10.23-1) unstable; urgency=low + + * New upstream release, 'Emergency de-stress call': + + debian/libgstreamer.symbols: + - Change new symbol version to 0.10.23. + + -- Sebastian Dröge Mon, 11 May 2009 10:53:55 +0200 + +gst-plugins-base0.10 (0.10.22.4-1) experimental; urgency=low + + * New upstream pre-release. + + -- Sebastian Dröge Thu, 07 May 2009 10:00:24 +0200 + +gst-plugins-base0.10 (0.10.22.3-1) experimental; urgency=low + + * debian/control.in: + + Updated Standards-Version to 3.8.1, no additional changes needed. + * New upstream pre-release. + + -- Sebastian Dröge Wed, 22 Apr 2009 08:11:28 +0200 + +gst-plugins-base0.10 (0.10.22.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/rules: + - Require GStreamer >= 0.10.22.2. + + debian/patches/01_alsamixer-race-condition.patch, + debian/patches/02_fft-allocations.patch, + debian/patches/03_base64-overflow-CVE-2009-0586.patch, + debian/patches/04_alsamixer-deadlock.patch: + - Dropped, merged upstream. + + debian/libgstreamer-plugins-base.symbols: + - Updated for the new symbols. + + -- Sebastian Dröge Thu, 16 Apr 2009 09:19:02 +0200 + +gst-plugins-base0.10 (0.10.22-5) unstable; urgency=low + + * debian/rules: + + Include clean-la.mk to remove dependency_libs from the .la files. + This is a preparation to drop them later and to remove unneeded + dependencies when linking to the GStreamer libraries. + * debian/patches/04_alsamixer-deadlock.patch: + + Fix a deadlock in alsamixer in some error cases. Patch from upstream + GIT, fixes a gnome-sound-properties freeze. + + -- Sebastian Dröge Sat, 04 Apr 2009 08:40:17 +0200 + +gst-plugins-base0.10 (0.10.22-4) unstable; urgency=high + + * debian/patches/03_base64-overflow-CVE-2009-0586.patch: + + SECURITY: Fix overflow in the base64 code, CVE-2009-0586. + Patch from upstream GIT. + + -- Sebastian Dröge Tue, 17 Mar 2009 10:46:54 +0100 + +gst-plugins-base0.10 (0.10.22-3) unstable; urgency=low + + * debian/patches/01_alsamixer-race-condition.patch: + + Fix race condition in alsamixer which made the volume controls + useless in many situations (Closes: #514685). + Patch from upstream GIT. + + -- Sebastian Dröge Thu, 26 Feb 2009 11:04:51 +0100 + +gst-plugins-base0.10 (0.10.22-2) unstable; urgency=low + + * Upload to unstable. + + -- Sebastian Dröge Sun, 15 Feb 2009 19:57:57 +0100 + +gst-plugins-base0.10 (0.10.22-1) experimental; urgency=low + + * New upstream release, 'Hidey Hidey Hidey Ho': + + debian/patches/01_fft-struct-alignment.patch: + - Dropped, merged upstream. + + debian/patches/02_fft-allocations.patch: + - Initialize some uninitialized variables. + + debian/rules: + - Update GStreamer build dependency to 0.10.22. + + debian/libgstreamer-plugins-base.symbols: + - Update for the new version. + + -- Sebastian Dröge Tue, 20 Jan 2009 09:11:18 +0100 + +gst-plugins-base0.10 (0.10.21.3-2) experimental; urgency=low + + * debian/patches/01_fft-struct-alignment.patch, + debian/patches/02_fft-allocations.patch: + + Fix struct alignment in the FFT library, resulting + in SIGBUS on sparc. + + Save one allocation per FFT instance. + + -- Sebastian Dröge Tue, 13 Jan 2009 21:09:04 +0100 + +gst-plugins-base0.10 (0.10.21.3-1) experimental; urgency=low + + * New upstream pre-release: + + debian/patches/01_gio-modules.patch, + debian/patches/02_gnome-vfs-modules.patch, + debian/patches/99_autoconf.patch: + - Dropped, merged upstream. + + debian/libgstreamer-plugins-base.symbols: + - Updated with the new symbols. + + -- Sebastian Dröge Sun, 11 Jan 2009 20:23:06 +0100 + +gst-plugins-base0.10 (0.10.21.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/patches/02_gtkdoc-rebase.patch, + debian/patches/03_image-tag-length.patch: + - Dropped, merged upstream. + + debian/rules: + - Update gstreamer build dependency. + + debian/gstreamer-plugins-base.install, + debian/libgstreamer-plugins-base.install: + - Add new libgstapp library and app plugin. + + debian/patches/01_gio-modules.patch, + debian/patches/02_gnome-vfs-modules.patch, + debian/patches/99_autoconf.patch: + - Add plugin dependencies for the GnomeVFS, GIO, GVfs + modules. + + debian/libgstreamer-plugins-base.symbols: + - Add new symbols. + + -- Sebastian Dröge Wed, 07 Jan 2009 12:12:13 +0100 + +gst-plugins-base0.10 (0.10.21-3) experimental; urgency=low + + * debian/patches/03_image-tag-length.patch: + + Patch from upstream CVS to fix a regression with the length of + image tags which makes all non-URI list image tags broken. + + -- Sebastian Dröge Wed, 22 Oct 2008 09:02:26 +0200 + +gst-plugins-base0.10 (0.10.21-2) experimental; urgency=low + + * debian/patches/02_gtkdoc-rebase.patch: + + Don't require gtk-doc for the docs. Fixes the build with + binary-arch only. + * debian/patches/02_gtk-doc-cflags.patch: + + Dropped, this was already fixed different upstream. + + -- Sebastian Dröge Tue, 07 Oct 2008 11:33:19 +0200 + +gst-plugins-base0.10 (0.10.21-1) experimental; urgency=low + + * New upstream release, 'We Could Be Wrong': + + debian/rules: + - Build depend on gstreamer >= 0.10.21. + + debian/build-deps.in: + - Build depend on GTK >= 2.12 for some tests. + + -- Sebastian Dröge Sat, 04 Oct 2008 12:27:42 +0200 + +gst-plugins-base0.10 (0.10.20-3) experimental; urgency=low + + * debian/control.in: + + Suggest gstreamer-codec-install instead of gnome-app-install. + + Recommend gvfs for the GIO plugin. + + Wrap control fields. + * debian/rules: + + Build depend on gstreamer >= 0.10.20-3 for the new virtual package + names. + + -- Sebastian Dröge Fri, 15 Aug 2008 09:25:49 +0200 + +gst-plugins-base0.10 (0.10.20-2) experimental; urgency=low + + * debian/control.in, + debian/rules: + + Use new automatic codec installation infrastructure. + * debian/rules: + + Use /usr/bin/gstreamer-codec-install as codec installation helper. This + is an alternative that is provided by gnome-app-install for example. + * debian/control.in: + + Let the debug package only depend on gstreamer0.10-alsa on Linux. + + -- Sebastian Dröge Thu, 07 Aug 2008 15:49:44 +0200 + +gst-plugins-base0.10 (0.10.20-1) unstable; urgency=low + + * New upstream release, 'Here I Go Again': + + debian/libgstreamer-plugins-base.symbols: + - Updated for the new version. + * debian/control.in: + + Updated Standards-Version to 3.8.0, no additional changes needed. + + -- Sebastian Dröge Wed, 18 Jun 2008 20:14:42 +0200 + +gst-plugins-base0.10 (0.10.19.3-1) experimental; urgency=low + + * New upstream pre-release. + * debian/patches/02_gtk-doc-cflags.patch: + + Use the CFLAGS passed to configure also for the gtk-doc utitilities. + + -- Sebastian Dröge Thu, 12 Jun 2008 12:10:52 +0200 + +gst-plugins-base0.10 (0.10.19.2-1) experimental; urgency=low + + [ Sjoerd Simons ] + * debian/patches/12_decodebin_fakesink.patch + + Added. Lock the fakesink before setting the state to NULL and removing + it from the bin so that a concurrent state change cannot interfere. (From + upstream CVS) + + [ Sebastian Dröge ] + * New upstream pre-release: + + Fixes parsing of tmplayer/vplayer subtitles (Closes: #478301). + + debian/patches/01_gio_no_http.patch, + debian/patches/03_gio-uri-schemes-fix.patch, + debian/patches/11_baseaudiosink_rounding_errors.patch, + debian/patches/12_decodebin_fakesink.patch, + debian/patches/75_build_docs_without_python_xml.patch: + - Dropped, merged upstream. + + debian/build-deps.in, + debian/rules: + - Bump gstreamer build dependency to >= 0.10.19.1. + - Bump liboil build dependency to >= 0.3.14. + + debian/libgstreamer-plugins-base.symbols: + - Update symbol files for the new symbols. + * debian/rules: + + Pass -c4 to to dh_makeshlibs to fail the build when the symbol files is + out of date. + + Don't compress gtk-doc documentation to make gtk-doc happy. + * debian/patches/02_werror.patch, + debian/rules: + + Drop patch to prevent usage of -Werror and append -Wno-error to + CFLAGS and CXXFLAGS instead. + + -- Sebastian Dröge Thu, 05 Jun 2008 08:26:35 +0200 + +gst-plugins-base0.10 (0.10.19-2) unstable; urgency=low + + * debian/patches/11_baseaudiosink_rounding_errors.patch + + Added. Prevents the accumulation of rounding errors, causing audio and + video to get out of sync in certain streams (From upstream CVS) + + -- Sjoerd Simons Mon, 12 May 2008 12:01:04 +0200 + +gst-plugins-base0.10 (0.10.19-1) unstable; urgency=high + + * New upstream bugfix release, "Good Times": + + debian/patches/04_rtsp-eagain.patch: + - Dropped, merged upstream. + + -- Sebastian Dröge Mon, 07 Apr 2008 11:42:41 +0200 + +gst-plugins-base0.10 (0.10.18-3) unstable; urgency=low + + * debian/patches/03_gio-uri-schemes-fix.patch: + + Correctly set the supported URI schemes without leaving a NULL + somewhere except at the end. + * debian/patches/04_rtsp-eagain.patch: + + Retry on EAGAIN instead of erroring out. + + -- Sebastian Dröge Tue, 25 Mar 2008 09:07:03 +0100 + +gst-plugins-base0.10 (0.10.18-2) unstable; urgency=low + + * debian/patches/01_gio_no_http.patch: + + Don't use GIO for HTTP(S). It doesn't work that good and can't support + icecast metadata by design. Instead souphttpsrc/neonhttpsrc/gnomevfssrc + should be used for HTTP(S). + + -- Sebastian Dröge Sat, 22 Mar 2008 15:19:52 +0100 + +gst-plugins-base0.10 (0.10.18-1) unstable; urgency=low + + * New upstream release, "I will follow": + + debian/libgstreamer-plugins-base.symbols: + - Updated for the new version. + + -- Sebastian Dröge Fri, 21 Mar 2008 01:16:21 +0100 + +gst-plugins-base0.10 (0.10.17.4-1) experimental; urgency=low + + * New upstream pre-release: + + debian/libgstreamer-plugins-base.symbols, + debian/rules: + - Update symbols for 0.10.17.4 and use file versionize magic to + get the correct filename for the symbols file. + + debian/patches/02_werror.patch: + - Don't build with -Werror. + + debian/rules: + - Build depend on gstreamer >= 0.10.17.4. + + -- Sebastian Dröge Tue, 18 Mar 2008 13:31:18 +0100 + +gst-plugins-base0.10 (0.10.17.3-1) experimental; urgency=low + + * New upstream pre-release: + + debian/libgstreamer-plugins-base0.10-0.symbols: + - Updated. + + debian/rules: + - Update GStreamer build dependency to >= 0.10.17.3. + * debian/patches/75_build_docs_without_python_xml.patch, + debian/build-deps.in: + + Stop using pyxml for building the docs (Closes: #468628). + * debian/gstreamer-plugins-base.install, + debian/build-deps.in, + debian/rules: + + Enable the GIO plugin. + + -- Sebastian Dröge Tue, 11 Mar 2008 04:55:40 +0100 + +gst-plugins-base0.10 (0.10.17.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/patches/01_theoradec-granulepos.patch: + - Dropped, merged upstream. + + debian/rules: + - Update gstreamer build dependency. + + debian/libgstreamer-plugins-base0.10-0.symbols: + - Update symbols file. + * debian/control.in: + + Add Homepage field. + + -- Sebastian Dröge Tue, 04 Mar 2008 15:57:08 +0100 + +gst-plugins-base0.10 (0.10.17-3) unstable; urgency=low + + * debian/patches/99_ltmain_as-needed.patch, + debian/rules: + + Add -Wl,-z,defs -Wl,-O1 -Wl,--as-needed to LDFLAGS to remove some + unnecessary dependencies on various packages. + + -- Sebastian Dröge Tue, 19 Feb 2008 08:11:32 +0100 + +gst-plugins-base0.10 (0.10.17-2) unstable; urgency=low + + [ Emilio Pozuelo Monfort ] + * debian/rules: + + Decide the package name and url depending on the distribution. + * debian/build-deps.in: + + Build-Depend on lsb-release. + + [ Sebastian Dröge ] + * debian/patches/01_theoradec-granulepos.patch: + + Increment granulepos for new-bitstream versions appropriately. Fixes + playback of some Theora movies, e.g. LCA talks. Patch from upstream CVS + (Closes: #465106). + + -- Sebastian Dröge Mon, 11 Feb 2008 07:49:20 +0100 + +gst-plugins-base0.10 (0.10.17-1) unstable; urgency=low + + * New upstream bugfix-only release, "Peanut Butter and Jelly": + + Fixes ABI breakage in GstMixer related classes (Closes: #463202). + + -- Sebastian Dröge Wed, 30 Jan 2008 16:06:49 +0100 + +gst-plugins-base0.10 (0.10.16-1) unstable; urgency=low + + * New upstream release, "Scheduled Interruption", with API additions: + + debian/libgstreamer-plugins-base0.10-0.symbols: + - Update symbols for 0.10.16. + * debian/control.in: + + Add Replaces for gstreamer0.10-plugins-bad/-dbg as found in the + Ubuntu package to keep their delta lower. + + Add Conflicts for totem-gstreamer as found in the Ubuntu package + to keep their delta lower. + + -- Sebastian Dröge Tue, 29 Jan 2008 11:08:13 +0100 + +gst-plugins-base0.10 (0.10.15.4-1) experimental; urgency=low + + * New upstream pre-release. + * debian/libgstreamer-plugins-base0.10-0.symbols, + debian/control.in: + + Add a symbols file for the GStreamer base libraries, generated from all + 0.10 releases since 0.10.0. Build depend on dpkg-dev >= 1.14.13 for this. + + -- Sebastian Dröge Tue, 22 Jan 2008 13:22:56 +0100 + +gst-plugins-base0.10 (0.10.15.3-1) experimental; urgency=low + + * New upstream pre-release. + + -- Sebastian Dröge Fri, 18 Jan 2008 05:58:20 +0100 + +gst-plugins-base0.10 (0.10.15.2-1) experimental; urgency=low + + * New upstream pre-release: + + Adds support for chained Ogg files (Closes: #415572). This only works + if the playback application uses the new playbin2 plugin that is still + API unstable. + + debian/patches/01_baseaudiosink-eos-hanging.patch, + debian/patches/02_audioresample-latency.patch: + - Dropped, merged upstream. + + debian/gstreamer-plugins-base.install: + - Drop removed uridecodebin plugin, GstURIDecodeBin is in the decodebin2 + plugin now. + * debian/rules: + + Update gstreamer build dependency. + * debian/control.in: + + Update Standards-Version to 3.7.3, no additional changes needed. + + -- Sebastian Dröge Tue, 15 Jan 2008 15:23:54 +0100 + +gst-plugins-base0.10 (0.10.15-4) unstable; urgency=low + + [ Sebastian Dröge ] + * debian/rules: + + Set package name to "GStreamer Base Plugins" instead of "GStreamer + Plugins". + + [ Loic Minier ] + * Bump up type-handling build-dep to >= 0.2.14 and call it with two + arguments again. + + -- Loic Minier Mon, 10 Dec 2007 16:09:53 +0100 + +gst-plugins-base0.10 (0.10.15-3) unstable; urgency=low + + * debian/patches/01_baseaudiosink-eos-hanging.patch: + + Properly calculate EOS time to prevent hanging for some time + before receiving an EOS event (Closes: #452174). + Patch taken from upstream CVS. + * debian/patches/02_audioresample-latency.patch: + + Implement latency query in audioresample. This fixes audioresample + in a live pipeline. Patch taken from upstream CVS. + * debian/rules: + + Run the testsuite but don't fail the build if it doesn't work. + + -- Sebastian Dröge Wed, 28 Nov 2007 11:09:04 +0100 + +gst-plugins-base0.10 (0.10.15-2) unstable; urgency=low + + * debian/rules, + debian/build-deps.in: + + Use HOME instead of GNOME_VFS_HOME as the variable name changed in + 2.20.0-2. (Closes: #451905) + + -- Sebastian Dröge Mon, 19 Nov 2007 17:24:06 +0100 + +gst-plugins-base0.10 (0.10.15-1) unstable; urgency=low + + * New upstream release, "Light Years Ahead", with API additions: + + Fixes FTBFS if built twice in a row (Closes: #442587). + + debian/patches/02_short-ogg-files.patch: + - Dropped, merged upstream. + + debian/control.in: + - Update gstreamer0.10 build dependency to >= 0.10.14.1. + + debian/libgstreamer-plugins-base.install: + - Add new libgstfft library. + + -- Sebastian Dröge Tue, 13 Nov 2007 15:06:10 +0100 + +gst-plugins-base0.10 (0.10.14-4) unstable; urgency=low + + * debian/patches/02_short-ogg-files.patch: + + Fix playback of very short Ogg/Vorbis files. Patch from upstream CVS, + (Closes: #441364). + * debian/rules: + + s/curdir/CURDIR/ to fix FTBFS. + * debian/build-deps.in: + + Fix minimal required GnomeVFS version. + + -- Sebastian Dröge Sun, 09 Sep 2007 12:01:19 +0200 + +gst-plugins-base0.10 (0.10.14-3) unstable; urgency=low + + * debian/build-deps.in, + debian/rules: + + Require GnomeVFS >= 2.18.1-4 for the GNOME_VFS_HOME environment + variable and use this and GST_REGISTRY for the dh_gstscancodecs call + to make it work on buildds with non-writable homes. + + -- Sebastian Dröge Fri, 07 Sep 2007 16:08:15 +0200 + +gst-plugins-base0.10 (0.10.14-2) unstable; urgency=low + + [ Sebastian Dröge ] + * debian/rules: + + Correctly set LD_LIBRARY_PATH for dh_gstscancodecs. + * debian/control.in: + + Recommend libgnomevfs2-extra on gstreamer0.10-gnomevfs. This is + necessary to get HTTP support (Closes: #432363). + + [ Loic Minier ] + * Fix LD_LIBRARY_PATH. + * Drop misc obsolete compatibility vars from rules. + * Drop useless $(version). + * Cleanup rules. + + [ Sebastian Dröge ] + * debian/rules: + + Don't call dh_gstscancodecs for now. As GnomeVFS needs a writable home + directory when initializing dh_gstscancodecs fails on the GnomeVFS + plugin and the build fails (Closes: #435978). + + -- Sebastian Dröge Mon, 13 Aug 2007 14:22:15 +0200 + +gst-plugins-base0.10 (0.10.14-1) unstable; urgency=low + + [ Sebastian Dröge ] + * New upstream release 'Light Years Ahead', with API additions: + + Uses ALSA mixer notifications instead of polling (Closes: #424016). + * debian/patches/20_oggmux-schroedinger.patch: + + Dropped, merged upstream. + * debian/rules: + + Update gstreamer0.10 build dependency to >= 0.10.13.1. + * debian/libgstreamer-plugins-base.install: + + Add new libgstrtsp and libgstsdp libraries. + * debian/gstreamer-plugins-base.install: + + Add queue2 and uridecodebin plugins. + * debian/control.in: + + Suggest libvisual-0.4-plugins in gstreamer0.10-plugins-base for the + libvisual plugin. + + Use ${binary:Version} instead of ${Source-Version} to make lintian + happy. + + [ Loic Minier ] + * Pass --with-install-plugins-helper="/usr/bin/gnome-codec-install" to + configure; thanks Julian Andres Klode; suggest gnome-app-install; + closes: 434999. + + [ Sebastian Dröge ] + * debian/rules, + debian/build-deps.in: + + Run dh_gstscancodecs to export the codecs database. + + -- Sebastian Dröge Fri, 03 Aug 2007 17:31:53 +0200 + +gst-plugins-base0.10 (0.10.13-2) unstable; urgency=low + + * debian/patches/20_oggmux-schroedinger.patch: + + Patch from upstream CVS to fix muxing of Dirac video in Ogg containers. + + -- Sebastian Dröge Thu, 07 Jun 2007 16:29:57 +0200 + +gst-plugins-base0.10 (0.10.13-1) unstable; urgency=low + + * New upstream release with some API additions, "What's going on?": + + Fixes internal dataflow error with subtitles (Closes: #425323). + * debian/rules: + + There's no gstreamer0.10-theora package anymore since ages so don't try + to generate an install file for it. + * debian/control: + + Update libtheora build dependency. At least 1.0alpha5 is now required. + + -- Sebastian Dröge Tue, 05 Jun 2007 17:29:51 +0200 + +gst-plugins-base0.10 (0.10.12.1+cvs20070529-1) unstable; urgency=low + + * Prepare CVS snapshot + * Bump libgstreamer0.10-dev build-depend to 0.10.12.1 + * Add myself to Uploaders + + -- Sjoerd Simons Tue, 29 May 2007 09:08:13 +0200 + +gst-plugins-base0.10 (0.10.12-2) unstable; urgency=low + + * Upload to unstable + * Merge experimental branch: + + New upstream release 0.10.12, "Zombie Horde": + - Updated german translations (Closes: #379505) + - debian/rules: + . Update gstreamer build dependency to >= 0.10.11.1 + - debian/libgstreamer-plugins-base.install: + . Add libgstpbutils-0.10 library + - debian/patches/20_oggdemux-check-bos.patch: + . Dropped, applied upstream + + Let libgstreamer-plugins-base0.10-dev depend on the same version of + libgstreamer0.10-dev as the one gst-plugins-base0.10 build-depends on. + (Loic Minier) + + debian/control: + - Updated to use my debian.org mail address + + New upstream release 0.10.11, "Dumb things": + - debian/patches/70_relibtoolize.patch: + . Dropped, upstream uses Debian's libtool + - debian/build-deps.in: + . Raise liboil0.3-dev build dependency to >= 0.3.8 + - debian/rules: + . Raise gstreamer0.10 build-dependency to >= 0.10.10.1 + - debian/gstreamer-plugins-base.install: + . Add decodebin2 plugin + + -- Sebastian Dröge Mon, 9 Apr 2007 23:40:49 +0200 + +gst-plugins-base0.10 (0.10.10-4) unstable; urgency=medium + + * Fix superfluous .orig file in patch 20_oggdemux-check-bos; + thanks Luk Claes. + + -- Loic Minier Mon, 29 Jan 2007 17:59:40 +0100 + +gst-plugins-base0.10 (0.10.10-3) unstable; urgency=medium + + * New patch, 20_oggdemux-check-bos, fixes handling of problems when reading + BOS pages in the oggdemux element; reported by Sam Hocevar; from + GNOME #399340; closes: #407004. + + -- Loic Minier Mon, 22 Jan 2007 17:39:59 +0100 + +gst-plugins-base0.10 (0.10.10-2) unstable; urgency=low + + * Drop superfluous libgstvideo4linux.so lines in + gstreamer-plugins-base.install; thanks Aurelien Jarno for fixing + GNU/kFreeBSD again! closes: #391853. + + -- Loic Minier Mon, 6 Nov 2006 18:50:31 +0100 + +gst-plugins-base0.10 (0.10.10-1) unstable; urgency=low + + [ Sebastian Dröge ] + * New upstream release, "Chorizo", some API additions. + - Fix handling of ALSA emu10k1 mixer tracks. (Closes: #387095) + - debian/patches/70_relibtoolize.patch: + + Updated + - debian/rules: + + Bump libgstreamer0.10-dev build dependency to (>= 0.10.9.1) + - debian/gstreamer-plugins-base.install: + + Add the new GDP element + + [ Loic Minier ] + * Force generation of debian/control, whatever the timestamps say. + * Fix duplicate dependencies. + + -- Loic Minier Fri, 15 Sep 2006 17:54:16 +0200 + +gst-plugins-base0.10 (0.10.9-3) unstable; urgency=low + + * debian/rules, + debian/control.in: + + Add a -dbg package + * debian/compat, + debian/build-deps.in: + + Bump debhelper compat level to 5 + + -- Sebastian Dröge Wed, 23 Aug 2006 22:14:56 +0200 + +gst-plugins-base0.10 (0.10.9-2) unstable; urgency=medium + + * Don't build the doc on arm and m68k. It's painfully long, and -- at least + on arm -- it segfaults; this is to lower the impact of #383147. + * Update TODO list. + + -- Loic Minier Sat, 19 Aug 2006 23:25:01 +0200 + +gst-plugins-base0.10 (0.10.9-1) unstable; urgency=low + + * New upstream release, "I walk the line", with API additions. + - Bump up libgstreamer0.10-dev build-dep to >= 0.10.8.1. + - Update 10_gnome-vfs-dav-url patch. + - Drop 11_audioresample-non-negociated-errors patch, merged upstream. + - Update 70_relibtoolize patch. + + -- Loic Minier Sat, 15 Jul 2006 11:01:08 +0200 + +gst-plugins-base0.10 (0.10.8-2) unstable; urgency=low + + [ Loic Minier ] + * New patch, 10_gnome-vfs-dav-url, to allow the gnomevfs plugin to handle + dav:// URIs, thanks Mike Hommey. (Closes: #370362) + * New patch, 11_audioresample-non-negociated-errors from upstream, to clear + the internal state of audioresample properly and hence avoid + "non-negociated" errors. (Closes: #376544) + + [ Sebastian Dröge ] + * Change libvisual0.2-dev Build-Depends to libvisual-0.4-dev + + -- Sebastian Dröge Thu, 6 Jul 2006 11:07:35 +0200 + +gst-plugins-base0.10 (0.10.8-1) unstable; urgency=low + + * New upstream release, "Moar gij ziet mij nie". + - Bump up libgstreamer0.10-dev build-dep to >= 0.10.6.1. + - New patch, 70_relibtoolize, ditto. + - Drop 01_alsasink-query-rates, included and changed upstream. + - Query the supported sampling rates from ALSA (Closes: #365877) + + -- Loic Minier Sun, 11 Jun 2006 14:50:05 +0200 + +gst-plugins-base0.10 (0.10.7-2) unstable; urgency=low + + * Bump up Standards-Version to 3.7.2. + [debian/control, debian/control.in] + * Export OIL_CPU_FLAGS=0 for commands launched during the build process as + it can cause build failures on buildds with specific hardware at build + time. + [debian/rules] + + -- Loic Minier Thu, 18 May 2006 14:48:33 +0200 + +gst-plugins-base0.10 (0.10.7-1) unstable; urgency=low + + * Stop shipping /usr/lib/*.la files in libgstreamer-plugins-base-dev. + [debian/libgstreamer-plugins-base-dev.install] + * New upstream release, "Leave the gun", with API additions. + - Bump up inter-dependencies to 0.10.7. + [debian/control] + - Drop relibtoolizing patch as this release was libtoolized under Debian + or a derivative. + [debian/patches/70_relibtoolize.patch] + - Bump up libsgtreamer0.10-dev build-dep to >= 0.10.5.1. + [debian/control, debian/rules] + + -- Loic Minier Sun, 14 May 2006 21:57:10 +0200 + +gst-plugins-base0.10 (0.10.6-1) unstable; urgency=low + + * New upstream release, "Chao". + - Relibtoolize. + [debian/patches/70_relibtoolize.patch] + + -- Loic Minier Fri, 28 Apr 2006 23:10:10 +0200 + +gst-plugins-base0.10 (0.10.5.2-1) unstable; urgency=low + + * New upstream pre-release, with API additions. + - Bump up libgstreamer0.10-dev build-dep to 0.10.4.1. + [debian/control, debian/rules] + - Relibtoolize. + [debian/patches/70_relibtoolize.patch] + + -- Loic Minier Tue, 18 Apr 2006 10:45:48 +0200 + +gst-plugins-base0.10 (0.10.5-1) unstable; urgency=low + + * New upstream release, "Net", with API additions. + - Relibtoolize. + [debian/patches/70_relibtoolize.patch] + - Drop patch to detect NFS mounts, merged upstream. + [debian/patches/02_gnomevfssrc.patch] + + -- Loic Minier Fri, 17 Mar 2006 17:54:20 +0100 + +gst-plugins-base0.10 (0.10.4-1) unstable; urgency=low + + [ Loic Minier ] + * New upstream release, "Power", with API additions. + - Bump up libgstreamer0.10-dev build-dep to >= 0.10.4. + [debian/control, debian/rules] + - Drop patch for force linking against the PIC version of libcheck since + upstream implemented a better fix. + [debian/patches/10_libcheck-macro-force-pic.patch] + - Relibtoolize. + [debian/patches/70_relibtoolize.patch] + + [ Sebastian Dröge ] + * debian/patches/02_gnomevfssrc.patch (from GStreamer CVS): + + gnome_vfs_uri_is_local() alone is not a good indicator whether we can + operate in pull-mode with a specific URI, as it returns FALSE for + file:// URIs that point to an NFS-mounted path. Be more conservative + here: whitelist local files, blacklist http URIs and use the old + mechanism for anything else (Closes: GNOME #334216). + + -- Sebastian Dröge Sun, 12 Mar 2006 17:31:46 +0100 + +gst-plugins-base0.10 (0.10.3-1) unstable; urgency=low + + * New upstream release, "Under Pressure". (Closes: #352773) + + -- Loic Minier Tue, 14 Feb 2006 10:36:59 +0100 + +gst-plugins-base0.10 (0.10.2.3-1) unstable; urgency=low + + * New upstream pre-release. + * Add visual plugin. + . Install plugin. + [debian/gstreamer-plugins-base.install] + . Add libvisual0.2-dev (>= 0.2.0) build-dep. + [debian/build-deps, debian/build-deps.in, debian/control] + * Use upstream descriptions in packages descriptions. + [debian/control, debian/control.in] + + -- Loic Minier Sat, 11 Feb 2006 17:23:37 +0100 + +gst-plugins-base0.10 (0.10.2.2-1) unstable; urgency=low + + * New upstream pre-release. + - Bump liboil0.3-dev build-dep to >= 0.3.6. + [debian/control, debian/build-deps, debian/build-deps.in] + - Bump libgstreamer0.10-dev build-dep to >= 0.10.2.2 + [debian/control, debian/rules] + - Relibtoolize. + [debian/patches/70_relibtoolize.patch] + + -- Loic Minier Wed, 8 Feb 2006 18:01:48 +0100 + +gst-plugins-base0.10 (0.10.2-2) unstable; urgency=high + + * Bump libgstreamer0.10-dev build-dep to 0.10.2, thanks Bastian Blank. + (Closes: #348526) + [debian/control, debian/rules] + + -- Loic Minier Fri, 20 Jan 2006 13:58:23 +0100 + +gst-plugins-base0.10 (0.10.2-1) unstable; urgency=low + + * New upstream release, "Then the devil is six". + - Add new libgstcdda library. + [debian/libgstreamer-plugins-base.install, debian/control, + debian/control.in] + - Add new cdparanaoia plugin. + [debian/gstreamer-plugins-base.install] + + -- Loic Minier Mon, 16 Jan 2006 23:14:17 +0100 + +gst-plugins-base0.10 (0.10.1-1) unstable; urgency=medium + + * Drop the version requirement on gstreamer0.10-tools as it might end being + unsatisfied. + [debian/control, debian/control.in] + * Call dh_perl in binary-post-install/$(gst_pkgname)-plugins-base-apps and + use ${perl:Depends}. + [debian/control, debian/control.in, debian/rules] + * New upstream release. + - Upload as non-native package. (Closes: #345573) + - Relibtoolize and build-depend on libxt-dev (>= 6.8.2.dfsg.1-3) as an + additionnal safety measure. (Closes: #345327) + [debian/build-deps, debian/build-deps.in, debian/control, + debian/patches/70_relibtoolize.patch] + - Drop gst-launch-ext and update description of base-apps. + [debian/control, debian/control.in, + debian/gstreamer-plugins-base-apps.install, + debian/gstreamer-plugins-base-apps.manpages] + - Drop unused cdparanoia patch applied upstream. + [debian/patches/50_cdparanoia-fix-eos-detection-of-last-title.patch] + - Bump GST_LIB_DEV_DEP to 0.10.0.2. + [debian/control, debian/rules] + * Drop unused GST_PLUGINS_BASE_LIB_DEV_DEP and use the upstream version + (gst_version) in lieu of gst_plugins_base_version for inter-deps + consistency. + [debian/rules] + * Use gst_plugins_base_lib_dep to define shlibs. + [debian/rules] + * Force linking against libcheck_pic instead of libcheck. Warning: to use + this patch you need to relibtoolize afterwards or patch configure too. + [debian/patches/10_libcheck-macro-force-pic.patch] + + -- Loic Minier Tue, 3 Jan 2006 22:23:12 +0100 + +gst-plugins-base0.10 (0.10.0-3) unstable; urgency=low + + * Fix the package name, that's gstreamer0.10-plugins-base + [debian/gstreamer-plugins-base.install, debian/rules] + + -- Sebastien Bacher Thu, 22 Dec 2005 11:39:27 +0100 + +gst-plugins-base0.10 (0.10.0-2) unstable; urgency=low + + * Rename gstreamer0.10-misc to gstreamer0.10-plugins-good for consistency. + [debian/control, debian/control.in, debian/gstreamer-misc.install, + debian/gstreamer-plugins-good.install, debian/rules] + + -- Loic Minier Wed, 21 Dec 2005 19:35:20 +0100 + +gst-plugins-base0.10 (0.10.0-1) unstable; urgency=low + + [ Sebastien Bacher ] + * New package: + - build the documentation [debian/rules] + - no action needed to register the plugins with the new version + [debian/gstreamer-plugin-template.postinst, + debian/gstreamer-plugin-template.postrm, + debian/libgstreamer-plugins.postinst, + debian/libgstreamer-plugins.postrm, debian/rules] + - drop mechanism to build extra packages for other distributions around, + it's not useful for base [debian/extras, debian/rules] + - drop transitionnal workaround [debian/gstreamer-plugin-template.preinst] + - new gstreamer-plugin-base-doc package [debian/control.in, debian/rules] + - remove obsolete patches + [debian/patches/10_wavpack-high-quality-segfault.patch, + debian/patches/30_alsa-verify-accepted-period-size.patch, + debian/patches/31_alsa-advanced-probing.patch, + debian/patches/40_audioscale-timestamps-and-durations.patch, + debian/patches/50_ladspa-quiet.patch] + - updated the Build-Depends [debian/build-dep.in] + - updated the packages descriptions [debian/control.in] + - updated the packages names/list [debian/control.in, + debian/gstreamer-a52dec.install, debian/gstreamer-aa.install, + debian/gstreamer-artsd.install, debian/gstreamer-audiofile.install, + debian/gstreamer-avifile.install, debian/gstreamer-caca.install, + debian/gstreamer-cdio.install, debian/gstreamer-dvd.install, + debian/gstreamer-dv.install, debian/gstreamer-esd.install, + debian/gstreamer-festival.install, debian/gstreamer-flac.install, + debian/gstreamer-gsm.install, debian/gstreamer-gtk.install, + debian/gstreamer-hermes.install, debian/gstreamer-jpeg.install, + debian/gstreamer-lame.install, debian/gstreamer-mad.install, + debian/gstreamer-mikmod.install, debian/gstreamer-mms.install, + debian/gstreamer-mpeg2dec.install, debian/gstreamer-oss.install, + debian/gstreamer-sdl.install, debian/gstreamer-sid.install, + debian/gstreamer-speex.install, debian/gstreamer-swfdec.install, + debian/libgstreamer-gconf.install, debian/libgstreamer-gconf-dev.install, + debian/gstreamer-vorbis.install, debian/rules] + - updated the packages lists [debian/gstreamer-misc.install, + debian/libgstreamer-plugins-base-dev.install, + debian/libgstreamer-plugins-base.install] + - updated packages content + [debian/gstreamer-misc.install, debian/gstreamer-x.install] + - updated the version [debian/rules] + - updated watch file [debian/watch] + + [ Loic Minier ] + * Minor cleanups. + [debian/rules] + * Add Sebastien Bacher to Uploaders. + [debian/control, debian/control.in] + + -- Loic Minier Sat, 17 Dec 2005 18:11:03 +0100 + +gst-plugins0.8 (0.8.11-3) unstable; urgency=medium + + * New CDIO plugin package. + . Add libcdio-dev build-dep for CDIO support. + [debian/build-deps.in, debian/build-deps, debian/control] + . Add package description and file listing. + [debian/gstreamer-cdio.install, debian/control.in, debian/control] + . List package in plugins build-list. [debian/rules] + . List package in gstreamer-plugins deps. + [debian/control.in, debian/control] + * New MMS plugin package. (Closes: #301246) + . Add libmms-dev build-dep for mms:// and mmsh:// support. + [debian/build-deps.in, debian/build-deps, debian/control] + . Add package description and file listing. + [debian/gstreamer-cdio.install, debian/control.in, debian/control] + . List package in plugins build-list. [debian/rules] + . List package in gstreamer-plugins deps. + [debian/control.in, debian/control] + * Fix the homepage of the mikmod page and stop linking to an adult web site. + [debian/control, debian/control.in] + * Remove "Section: libs" from binary packages. + [debian/control, debian/control.in] + * Exit with non-zero code when requesting an unknown plugin. + [debian/extra] + * Add sample code to permit other distros to build additional plugins. + [debian/rules] + * Minor cleanups. + [debian/rules] + * New Gtk / Gdk package to split out this dep-tree for KDE folks, from + Ubuntu, thanks Sebastien Bacher. + . Add package description and file listing, remove it from -misc. + [debian/control.in, debian/control, debian/gstreamer-gtk.install, + debian/gstreamer-misc.install] + . List package in plugins build-list. [debian/rules] + . List package in gstreamer-plugins deps. + [debian/control.in, debian/control] + . Only "Replace" with -misc in the first version doing the split + (0.8.11-0ubuntu3), no Conflict needed. + * Add wavpack support, build the wavpack plugin and ship it in -misc. + (Closes: #339598) + . Add a libwavpack-dev build-dep. + [debian/build-deps, debian/build-deps.in] + . Ship plugin in -misc. + [debian/gstreamer-misc.install] + . Adjust the size of the internal decode buffer dynamically instead of + assuming 0.5 seconds are enough; fixes a segfault when playing files + encoded with -h; upstream bug: #317774; fix committed in branch + BRANCH-GSTREAMER-0_8. + [debian/patches/10_wavpack-high-quality-segfault.patch] + * Backport some interesting upstream fixes from CVS fixing most resampling + issues for non-standard bitrates and for complex ALSA configurations + (especially dmix), thanks Tim-Philipp Müller, Luca Ognibene, and others. + (Closes: #323447, #324163, #326135, #340038) + - When doing _set_period_size_near(), see what period size was actually + set in the end and continue working with that value instead of just + assuming the desired period size was accepted; upstream bug #318767; + fix committed in branch BRANCH-GSTREAMER-0_8. + [debian/patches/30_alsa-verify-accepted-period-size.patch] + - Don't mess up timestamps and durations when resampling by more than a + factor of 2 (e.g. 8kHz => 48kHz); upstream bug #318273; fix committed + in branch BRANCH-GSTREAMER-0_8. + [debian/patches/40_audioscale-timestamps-and-durations.patch] + - When the default device is being used, try to probe the caps of the + underlying device instead if possible. This should give more narrowly + defined caps that are closer to the hardware's capabilities. This is + enabled by default, but can be switched off via the new + 'advanced-probing' property; upstream bug #315121; fix committed in + branch BRANCH-GSTREAMER-0_8. + [debian/patches/31_alsa-advanced-probing.patch] + * Drop the polypaudio plugin package. (Closes: #342278) + . Drop libpolyp-dev (>= 0.7) build-dep. + [debian/build-deps.in, debian/build-deps, debian/control] + . Remove package description and file listing. + [debian/gstreamer-polypaudio.install, debian/control.in, debian/control] + . Remove package from plugins build-list. [debian/rules] + . Remove package from gstreamer-plugins deps. + [debian/control.in, debian/control] + * Add libgconf2-dev, libglib2.0-dev, liborbit2-dev, libpopt-dev, libxml2-dev + deps to libgstreamer-gconf0.8-dev as listed in its .la files. + [debian/control, debian/control.in] + * Add libglib2.0-dev, libpopt-dev, libxml2-dev deps to + libgstreamer-plugins0.8-dev as listed in its .la files. + [debian/control, debian/control.in] + * Fix EOS detection for last title (fixes gnome-cd hanging after last track + ends), thanks Gustavo Noronha Silva; upstream bug #317630; fix committed + in branch BRANCH-GSTREAMER-0_8. (Closes: #330954) + [debian/patches/50_cdparanoia-fix-eos-detection-of-last-title.patch] + * Don't overwrite DEB_CONFIGURE_EXTRA_FLAGS. + [debian/rules] + + -- Loic Minier Sun, 11 Dec 2005 14:52:38 +0100 + +gst-plugins0.8 (0.8.11-2) unstable; urgency=high + + * Add misc:depends to all binary packages. (Closes: #329759) + + -- Loic Minier Mon, 17 Oct 2005 21:41:54 +0200 + +gst-plugins0.8 (0.8.11-1) unstable; urgency=low + + * Override gstreamer-dv section to extra because it depends on libavc1394-0 + which is in extra. [debian/control, debian/control.in] + * Bump libflac-dev build-dependency for the latest flac soname change + (libflac6 -> libflac7). (Closes: #325940) + * New upstream release, "... And Thanks For All The Fix". + - New plugin imagemixer. [debian/gstreamer-misc.install] + - New plugin dvdsubdec. [debian/gstreamer-misc.install] + - Drop obsolete artsd patch, merged upstream. + [debian/patches/25_artds-no-name.patch] + * Update FSF address. [debian/copyright] + * Add cairo plugin. [debian/build-deps, debian/build-deps.in, + debian/control, debian/gstreamer-misc.install] + + -- Loic Minier Sun, 4 Sep 2005 21:19:47 +0200 + +gst-plugins0.8 (0.8.10-3) unstable; urgency=high + + * Urgency high because this fixes some RC bugs and 0.8.10-2 was caught in + the C++ transition. + * Bump up build-deps to get versions past the C++ transition. + [debian/build-deps, debian/build-deps.in, debian/control] + - libsdl1.2-dev + - libsidplay1-dev (Closes: #321315) + - libarts1-dev, libartsc0-dev + * Change X11 build-deps for the Xorg transition. + [debian/build-deps, debian/build-deps.in, debian/control] + - remove xlibs-dev and xlibs-pic. + - add libx11-dev, libxext-dev, and libxv-dev. + * Drop jack plugin. [debian/build-deps, debian/build-deps.in, + debian/control, debian/control.in, debian/gstreamer-jack.install, + debian/rules] (Closes: #321648) + * Add libgstglimagesink plugin. [debian/gstreamer-x.install] + * Add libgstfreeze plugin. (Closes: #318146) [debian/gstreamer-misc.install] + * Let libgstreamer-gconf suggest gnome-media. (Closes: #294490) + [debian/control, debian/control.in] + + -- Loic Minier Fri, 12 Aug 2005 18:36:58 +0200 + +gst-plugins0.8 (0.8.10-2) unstable; urgency=medium + + [ Sebastien Bacher ] + * debian/build-deps.in: + - list libpolyp-dev. + * debian/control.in: + - gstreamer0.8-plugins depends on gstreamer0.8-polypaudio. + - gstreamer0.8-polypaudio description. + * gstreamer-polypaudio.install: + - install libpolypaudio.so. + * debian/rules: + - list polypaudio. + + [ Loic Minier ] + * Update jack dependency. (Closes: #317197) + [debian/build-deps, debian/build-deps.in, debian/control] + * Update aalib dependency. (Closes: #320886) + [debian/build-deps, debian/build-deps.in, debian/control] + + * Urgency medium because of RC. + + -- Loic Minier Sun, 10 Jul 2005 19:27:08 +0200 + +gst-plugins0.8 (0.8.10-1) unstable; urgency=low + + * Loic Minier: + * New upstream release "Jangle". + - Bump inter-dependencies to >= 0.8.10. + * Use upstream fix for the "name" property of the artsdsink element. + [debian/patches/25_artds-no-name.patch] + + -- Loic Minier Sat, 2 Jul 2005 21:04:40 +0200 + +gst-plugins0.8 (0.8.9-2) unstable; urgency=medium + + * Loic Minier: + * Urgency medium as last gstreamer0.8 release exposed an artsdsink + problem fixed here. + * Add a versioned dependency with >= current-upstream-version to all + current shlibs inter-dependencies to ensure consistency of symbols. + (Closes: #315556) [debian/control, debian/control.in, debian/rules] + * Remove the "name" property in the artsd plugin as it interferes with + the usage of this property within GStreamer. (Closes: #314762) + [debian/patches/25_artds-no-name.patch] + * Call gst-register and gst-compprep with GST_REGISTRY in their + environment to override the default behavior of writing to + /root/.gstreamer-0.8, waiting for an upstream fix. + [debian/gstreamer-plugin-template.postinst, + debian/gstreamer-plugin-template.postrm] + * Add a postinst/postrm snipset to register plugins in + libgstreamer-plugins0.8. (Closes: #283658) + [debian/libgstreamer-plugins.postrm, + debian/libgstreamer-plugins.postinst, debian/changelog, debian/rules] + * Remove left over /root/.gstreamer-0.8 tree if it hasn't been modified. + [debian/gstreamer-plugin-template.preinst, debian/rules] + * Set Maintainer to group. [debian/control, debian/control.in] + * Bump Standards-Version to 3.6.2, no change needed. + [debian/control, debian/control.in] + * Workaround type-handling bug #315761. + [debian/control, debian/control.in, debian/rules] + + -- Loic Minier Mon, 27 Jun 2005 15:44:35 +0200 + +gst-plugins0.8 (0.8.9-1) unstable; urgency=low + + * Loic Minier: + * New upstream release "Old Hat". + - Fix SIGFPE in alsasrc. (Closes: #279399) + - New Musepack plugin package. + . Add libmpcdec-dev build-dep for Musepack support, this is now + detected in a Debian compatible manner via mpcdec/mpcdec.h and + -lmpcdec. [debian/build-deps.in, debian/build-deps, debian/control] + . Add package description and file listing. + [debian/gstreamer-musepack.install, debian/control.in, + debian/control] + . List package in plugins build-list. [debian/rules] + . List package in gstreamer-plugins deps. + [debian/control.in, debian/control] + - Renamed and updated "ladspa" patch. + [debian/patches/ladspa-quiet.patch, + debian/patches/50_ladspa-quiet.patch] + - Add video4linuxradio plugin to the gstreamer-misc package. + [debian/rules] + * Add compatibility block for older dpkg and use DEB_HOST_ARCH_OS. + * Add myself as uploader. [debian/control.in, debian/control] + * Fix indentation and executable permission of package maintaining + helpers. [debian/extra, debian/maint, debian/mk.control] + * Remove more bits from the arts plugin, left over in 0.8.1-2. + [debian/extra, debian/gstreamer-arts.install] + * Document the role of most files. [debian/HACKING.Debian] + * Add a TODO list for the Debian package. [debian/TODO.Debian] + + -- Loic Minier Tue, 21 Jun 2005 07:47:04 +0200 + +gst-plugins0.8 (0.8.8-3) unstable; urgency=low + + * debian/build-deps.in: + * Bump liboil dependency to liboil0.3-dev. gst-plugins doesn't yet use + 0.3 itself but the swfdec plugin build requires it. + + -- David I. Lehn Wed, 30 Mar 2005 19:08:07 -0500 + +gst-plugins0.8 (0.8.8-2) unstable; urgency=low + + * debian/control.in: + * gstreamer0.8-vorbis depends on gstreamer0.8-misc >= 0.8.8-1 + (Closes: #300082, #299954, #299921) + + -- David I. Lehn Thu, 17 Mar 2005 12:53:38 -0500 + +gst-plugins0.8 (0.8.8-1) unstable; urgency=low + + * New upstream + * debian/patches/flac.patch: + * Remove: included upstream + * debian/gstreamer-misc.install: + * Add new plugins: autodetect, dvdlpcmdec, puzzle, rfbsrc, subparse + * Add new plugins with lib dependencies: gconfelements, mng, shout2 + (Closes: #292011) + * debian/build-deps.in: + * Add: libmng-dev, libshout3-dev + * Upstream fixes: + * Xv falls back to X11 (Closes: #296848) + * Better audio sink selection (Closes: #284210) + * alsasink crash (Closes: #296751) + + -- David I. Lehn Wed, 16 Mar 2005 01:00:39 -0500 + +gst-plugins0.8 (0.8.7-3) unstable; urgency=low + + * debian/rules, debian/build-deps.in + * Apply additional kfreebsd-gnu patch (Closes: #272568) + * debian/patches/flac.patch: + * Upstream fix for FLAC API change (Closes: #290784) + + -- David I. Lehn Mon, 17 Jan 2005 17:53:42 -0500 + +gst-plugins0.8 (0.8.7-2) unstable; urgency=low + + * debian/rules: + * Bump libgstreamer0.8-dev dependency to >= 0.8.7.1 + + -- David I. Lehn Sat, 8 Jan 2005 15:50:45 -0500 + +gst-plugins0.8 (0.8.7-1) unstable; urgency=low + + * New upstream + * debian/build-deps.in, debian/control.in, debian/rules, + debian/gstreamer-dv.install, debian/gstreamer-misc.install: + * Patch build system for kfreebsd-gnu (Closes: #272568) + * debian/rules: + * Distribute NEWS (as requested in #275717) + * debian/gstreamer-misc.install: + * Add new plugins: apetag, tta + * debian/patches/configure-speex.patch: + * Remove patch, included upstream + * debian/build-deps.in: + * Build against latest libflac-dev + + -- David I. Lehn Fri, 7 Jan 2005 13:52:27 -0500 + +gst-plugins0.8 (0.8.6-1) unstable; urgency=low + + * New upstream + * Rhythmbox hangs/crashes fixes (Closes: #245757, #277146) + * Rhythmbox silence after resume play fixes (Closes: #261841) + * Ogg seeking fixes (Closes: #277396) + * debian/build-deps.in: + * Bump libswfdec to libswfdec0.3-dev + * Add libavc1394-dev + * Add liboil0.2-dev + * Versioned libspeex-dev + * debian/gstreamer-misc.install: + * Add new plugin: equalizer + * debian/watch: + * Add watch file + * debian/rules: + * Update GStreamer core dev dependency to 0.8.4 + * ext/ladspa/gstladspa.c, debian/patches/ladspa-quiet.patch: + * Move patch to debian/patches/ + + -- David I. Lehn Mon, 29 Nov 2004 04:02:43 -0500 + +gst-plugins0.8 (0.8.5-1) unstable; urgency=low + + * New upstream + * debian/rules: + * Use CDBS simple-patchsys + * debian/control: to debian/control:: for newer CDBS + * debian/patches/configure-speex.diff: + * Fix speex detection + + -- David I. Lehn Wed, 6 Oct 2004 20:15:52 -0400 + +gst-plugins0.8 (0.8.4-1) unstable; urgency=low + + * New upstream + * debian/control.in: + * Add -theora package to -plugins package + * debian/rules: + * Drop upstream ChangeLog from plugin packages due to size + * debian/README.Debian: + * Add note about ChangeLog + + -- David I. Lehn Thu, 2 Sep 2004 23:03:44 -0400 + +gst-plugins0.8 (0.8.3-1) unstable; urgency=low + + * New upstream + * debian/control.in, debian/build-deps.in, debian/gstreamer-theora.install, + debian/rules: + * New theora plugin + * debian/gstreamer-misc.install: + * Add new plugins: alphacolor, decodebin, multifilesink, playbin + + -- David I. Lehn Sat, 7 Aug 2004 09:50:10 -0400 + +gst-plugins0.8 (0.8.2-3) unstable; urgency=high + + * debian/libgstreamer-gconf.postinst: + Remove. schema install now handled by dh_gconf which moved the schema + location causing old hardcoded /etc path to fail. + (Closes: #259538, #259119, #259205) + * Urgency high: GNOME team wants this in sarge now. + + -- David I. Lehn Fri, 16 Jul 2004 09:17:18 -0400 + +gst-plugins0.8 (0.8.2-2) unstable; urgency=low + + * debian/rules: + * Bump libgstreamer0.8-dev dep up to get fixed shlibs + * Rebuild with proper shlibs (Closes: #256181, #256494) + + -- David I. Lehn Wed, 7 Jul 2004 01:16:48 -0400 + +gst-plugins0.8 (0.8.2-1) unstable; urgency=medium + + * New upstream + * debian/build-deps.in: + * Add libdts-dev + * ext/Makefile.{am,in}: + * Fix so dts dir is built + * debian/gstreamer-misc.install: + * Add DTS plugin + * Added alpha, audiorate, dtsdec, multipart, videobox, videomixer, and + videorate + * debian/rules: + * Update libgstreamer0.8-dev build dependency to 0.8.3-2 + * debian/control.in: + * Remove explicit libgstreamer deps, autodetected now + + -- David I. Lehn Wed, 23 Jun 2004 23:50:53 -0400 + +gst-plugins0.8 (0.8.1-4) unstable; urgency=low + + * gst-libs/gst/riff/riff-media.c: + * caps type typo fix from CVS + * gst-libs/gst/resample/private.h: + * disabled ppc code fix from CVS (Closes: #252991) + * sys/v4l/gstv4lsrc.c: + * caps fix NULL->any from CVS + + -- David I. Lehn Wed, 16 Jun 2004 01:24:41 -0400 + +gst-plugins0.8 (0.8.1-3) unstable; urgency=low + + * rerun autoget.sh to fix arm builds (Closes: #251592) + * gconf/gstreamer.schemas.in, gcon/gstreamer-0.8.schemas: + s/xvideosink/xvimagesink/ (Closes: #250575) + + -- David I. Lehn Tue, 1 Jun 2004 10:10:37 -0400 + +gst-plugins0.8 (0.8.1-2) unstable; urgency=low + + * debian/build-deps.in: + * Update "libdv2-dev" to "libdv4-dev | libdv-dev" + * debian/control.in, debian/extra, debian/rules: + * Remove arts plugin. Detection, flags, and include directory build code + is too buggy for plugin to build at the moment. + + -- David I. Lehn Thu, 29 Apr 2004 18:10:48 -0400 + +gst-plugins0.8 (0.8.1-1) unstable; urgency=low + + * New upstream + * debian/gstreamer-misc.install: + * add libgstdebug.so + + -- David I. Lehn Sun, 18 Apr 2004 01:04:36 -0400 + +gst-plugins0.8 (0.8.0-2) unstable; urgency=low + + * Bump to -2 to ease upgrades for early -1 testers + * debian/build-deps.in: + * Add libgtk2.0-dev + + -- David I. Lehn Thu, 15 Apr 2004 17:50:14 -0400 + +gst-plugins0.8 (0.8.0-1) unstable; urgency=low + + * New upstream (Closes: #234071, #240663) + * debian/rules: + * Switch to CDBS + * Version now at 0.8 + * Convert various control files to versioned ones for build + * Add/rename/remove generated plugins files + * debian/control.in: + * Update Standards-Version to 3.6.1 + * Add -caca and -speex plugins + * Remove -http plugin + * debian/build-deps.in: + * Add cdbs + * Update debhelper >= 4.1.0 + * Add caca, speex, and pango deps + * Remove libghttp-dev + * debian/gstreamer-http.install + * Remove + * debian/gstreamer-{speex|caca}.install: + * Add new plugins + * debian/*.install: + * Append debian/tmp for CDBS + * General cleanups to support versioned files and locations + * debian/gstreamer-esd.install: + * Remove libgstesdmod + * Change libgstesdsink to libgstesd + * debian/gstreamer-plugin-libs.install: + * Stick locale info in here for lack of a better place + * debian/gstreamer-plugin-libs[-dev].install: + * Add support for colorbalance, mixer, navigation, propertyprobe, tag, + tuner, xoverlay, and xwindowlistener + * Add pkgconfig support for plugins, interfaces, and media-info + * debian/gstreamer-gnomevfs.install: + * s/libgstgnomevfs{src|sink}.so/libgstgnomevfs.so/ + * debian/gstreamer-colorspace.install: + * Rename to gstreamer-hermes.install + * Move generic and ffmpeg based colorspace plugins to -misc + * Provide gstreamerX.Y-colorspace + * debian/gstreamer-misc.install: + * v4l/v4l2 support merged to libgstvideo4linux[2].so + * Add gdkpixbuf, interleave, nassink, ogg, smoothwave, tagedit, + textoverlay, timeoverlay, typefindfunctions, videobalance, videodrop, + videofilter, videoflip + * Move generic and ffmpeg based colorspace plugins from -hermes + * Provide gstreamerX.Y-colorspace + * debian/gstreamer-plugin-libs.install: + * Rename to libgstreamer-plugins.install + * debian/gstreamer-plugin-libs-dev.install: + * Rename to libgstreamer-plugins-dev.install + * debian/gstreamer-gconf.install: + * Rename libgstreamer-gconf.install + * Remove dev files + * debian/gstreamer-gconf.postinst: + * Rename to libgstreamer-gconf.postinst + * debian/libgstreamer-gconf-dev.install: + * Added + * Add dev parts from gstreamer-gconf.install + * configure.ac, configure: + * Patch from CVS to get arts to detect on Debian boxen + * ext/speex/gstspeex{dec,enc}.c: + * Upstream patch for static pad templates (caused gst-compprep-0.8 bugs) + * ext/ladspa/gstladspa.c: + * Change g_warning to DEBUG_OBJ to silence gst-compprep + * ext/libcaca/gstcacsink.c: + * Upstream patch to avoid cacasink windows with gst-inspect/compprep + + -- David I. Lehn Wed, 14 Apr 2004 19:14:14 -0400 + +gst-plugins0.7 (0.7.6-1) unstable; urgency=low + + * New upstream + + -- David I. Lehn Wed, 17 Mar 2004 19:06:48 -0500 + +gst-plugins0.7 (0.7.5-1) unstable; urgency=low + + * New upstream + + -- David I. Lehn Wed, 17 Mar 2004 18:47:19 -0500 + +gst-plugins0.7 (0.7.4-1) unstable; urgency=low + + * New upstream + + -- David I. Lehn Wed, 17 Mar 2004 18:46:27 -0500 + +gst-plugins0.7 (0.7.3-1) unstable; urgency=low + + * New upstream + + -- David I. Lehn Wed, 17 Mar 2004 18:42:05 -0500 + +gst-plugins0.7 (0.7.1-1) unstable; urgency=low + + * New upstream + * Versioning package as 0.7 + + -- David I. Lehn Wed, 17 Mar 2004 18:31:51 -0500 + +gst-plugins (0.6.4-4) unstable; urgency=low + + * ext/alsa/gstalsa.h: + * Patch to compile with alsa-lib 1.0.x (Closes: #231870) + + -- David I. Lehn Sat, 14 Feb 2004 17:49:01 -0500 + +gst-plugins (0.6.4-3) unstable; urgency=low + + * debian/build-deps.in: + * Update jack dependency to libjack0.80.0-dev (>= 0.94.0) + (Closes: #221620, #228784) + * Update libmpeg2 dependency to libmpeg2-4-dev (>= 0.4.0b) + * ext/mpeg2dec/gstmpeg2dec.c: Patch for libmpeg2 0.4.0b + + -- David I. Lehn Mon, 26 Jan 2004 18:21:45 -0500 + +gst-plugins (0.6.4-2) unstable; urgency=low + + * debian/rules: Disable ffmpeg for everything but i386 due to PIC issues + (Closes: #219284) + + -- David I. Lehn Thu, 6 Nov 2003 16:30:35 -0500 + +gst-plugins (0.6.4-1) unstable; urgency=low + + * New upstream + * ESD updates (Closes: #218736) + * Acknowledge NMU (Closes: #217981, #213811) + * Rebuild to fix gconf liblinc1 dependency (Closes: #217771) + * gstreamer-misc: add v4l2 support (Closes: #199900) + * Use pre-Linux-2.6 videodev.h to compile v4l support + + -- David I. Lehn Mon, 3 Nov 2003 15:10:59 -0500 + +gst-plugins (0.6.3-1.1) unstable; urgency=low + + * NMU - Patch from Jordi Mallach + * debian/build-deps.in: libgconf2-dev and libgnomevfs2-dev need GNOME 2.4 + versions for the liblinc1 transition (closes: #217981). + * debian/rules: gstreamer build-dep should be versioned (>= 0.6.3) + (closes: #213811). + + -- LaMont Jones Thu, 30 Oct 2003 09:12:11 -0700 + +gst-plugins (0.6.3-1) unstable; urgency=low + + * New upstream + * Includes ESD seeking fix (Closes: #201171) + + -- David I. Lehn Mon, 1 Sep 2003 23:15:49 -0400 + +gst-plugins (0.6.2-2) unstable; urgency=low + + * Fix ffmpeg makefile install rule to work even when ffmpeg build is + disabled (Closes: #198148, #199072) + * Apply partial patches from running autogen.sh to fix arm builds (excluding + other unrelated generated file changes) (Closes: #199872) + * Update to support libdvdnav 0.1.9 API + + -- David I. Lehn Fri, 11 Jul 2003 01:01:15 -0400 + +gst-plugins (0.6.2-1) unstable; urgency=low + + * New upstream + * Add dv1394src to gstreamer-dv + + -- David I. Lehn Thu, 12 Jun 2003 11:39:51 -0400 + +gst-plugins (0.6.1-2) unstable; urgency=low + + * (unreleased) + * Adapt to gstreamer package merge: remove -core, -core-libs, -core-libs-dev + dependencies as needed. Fixes missing scheduler bugs. + (Closes: #181503, #191720) + * Use versioned gst-{register,compprep}-0.6 + * Update jack dependency to libjack0.71.2-dev (Closes: #195401) + * Update libdvdnav dependency to (>= 0.1.7) and revert patch for + compatibility with 0.1.3. + * Update libdvdread2 dependency to libdvdread3-dev + * Remove DISPLAY unset hacks from postinst/postrm scripts and fix non-X + installs with 0.6.2 CVS xvideosink patch. (Closes: #165372, #168438) + * Link libgstplay to libgstcontrol. (Closes: #194107) + + -- David I. Lehn Thu, 5 Jun 2003 02:29:44 -0400 + +gst-plugins (0.6.1-1) unstable; urgency=low + + * New upstream + * Update maintainer address to @debian.org + * gstreamer-gconf libs properly linked upstream (Closes: Bug#187353) + * debian/control.in: + * gstreamer-vorbis depends on gstreamer-core-libs (Closes: Bug#188606) + * Apply gnomevfs patch from http://bugzilla.gnome.org/show_bug.cgi?id=94113 + * ffmpeg plugin only builds, and now is only packaged, on i386/powerpc (Yes + this is bad - better shared lib support needed.) (Closes: Bug#186525) + * Revert dvdnav support to libdvdnav 0.1.3 API + * Unset DISPLAY before calling gst-register/gst-compprep + * ext/ladspa/gstladspa.c:472: s/g_warning/GST_DEBUG/ to avoid printing of a + warning on every plugin package install when swh-plugins is installed. + (sinCos plugin executes this code path) + + -- David I. Lehn Sat, 3 May 2003 18:30:16 -0400 + +gst-plugins (0.6.0-4) unstable; urgency=low + + * debian/build-deps.in: + * Updated libvorbis-dev to (>= 1.0.0-2) (Closes: Bug#184671) + + -- David I. Lehn Fri, 14 Mar 2003 11:12:21 -0500 + +gst-plugins (0.6.0-3) unstable; urgency=low + + * debian/build-deps.in: + * Add libartsc0-dev so artsc-config is present so arts[d] plugins get + built so the arts[d] packages actually include the arts[d] plugins + (Closes: Bug#181438) + * Update JACK dependency to 0.50.0 + + -- David I. Lehn Fri, 7 Mar 2003 23:51:46 -0500 + +gst-plugins (0.6.0-2) unstable; urgency=low + + * NMU (with maintainer's permission) + * Change libarts-dev build-dep to libarts1-dev (Closes: #180537) + + -- David Schleef Mon, 10 Feb 2003 21:33:47 -0800 + +gst-plugins (0.6.0-1) unstable; urgency=low + + * New upstream + + -- David I. Lehn Sat, 1 Feb 2003 21:51:54 -0500 + +gst-plugins (0.5.2.3-1) unstable; urgency=low + + * New upstream + + -- David I. Lehn Thu, 30 Jan 2003 23:52:08 -0500 + +gst-plugins (0.5.2.2-1) unstable; urgency=low + + * New upstream + * pre-release for 0.6.0 + * debian/gstreamer-gconf.install: + * add gstreamer-gconf-*.pc + * debian/gstreamer-misc.install: + * remove libgstaviparse.so + + -- David I. Lehn Wed, 29 Jan 2003 15:07:06 -0500 + +gst-plugins (0.5.2-1) unstable; urgency=low + + * New upstream + * debian/build-deps.in: + - Update swfdec dependency to 0.2.0 + * debian/gstreamer-misc.install: + - add libgstaviparse.so + + -- David I. Lehn Thu, 23 Jan 2003 22:17:31 -0500 + +gst-plugins (0.5.1-1) unstable; urgency=low + + * New upstream + * Update GStreamer dependency to 0.5.1 + * Update JACK dependency to 0.44.0 + * Remove gstreamer-avifile package (avifile not supported on many + architectures and upstream is deprecating it in favor of ffmpeg) + * Add support for building unsupported plugin packages (avifile, lame, etc) + * Tighten shlib deps for gstreamer-plugin-libs and gstreamer-gconf packages + (may split off true lib* packages eventually, was trying to avoid even + more packages) + * gstreamer-misc: add oneton and vbidec + * Rebuild for newer sid libs (Closes: Bug#177410) + * Various small fixes from CVS + + -- David I. Lehn Mon, 20 Jan 2003 11:57:26 -0500 + +gst-plugins (0.5.0-1) unstable; urgency=low + + * New upstream + * Update libpng dependency to libpng12-0-dev + * Patch from CVS to support mpeg2dec 0.3.1 + * Patch from CVS to improve X error handling and remote X usage + * gstreamer-plugin-libs[-dev]: add media-info lib + * gstreamer-misc: add png plugin + * Use swfdec 0.1.3 API: s/swf_init/swfdec_decoder_new/ to avoid symbol + conflicts with avifile plugin + + -- David I. Lehn Tue, 17 Dec 2002 20:27:42 -0500 + +gst-plugins (0.4.2-2) unstable; urgency=low + + * Update JACK dependency to 0.40.1 + * Apply gst-launch-ext perlism patch (Closes: #170736) + * Apply patch from Erik Meusel to allow building with + other KDE arts packages (Closes: Bug#167538) + * Update mpeg2dec dependency to 0.3.0, convert over to gstmpeg2deccvs plugin + code, and adjust mpeg2dec check + * Add Provides: for virtual gstreamer-{audio,video}sink packages to make it + easier for applications to ensure output sinks are available. This isn't + foolproof and it's possible that a rare user might not need the standard + packaged audio/video sinks. For now those users can use the "equivs" + package to get around the problem. (Closes: Bug#169968) + + -- David I. Lehn Wed, 4 Dec 2002 02:25:41 -0500 + +gst-plugins (0.4.2-1.1) unstable; urgency=low + + * NMU + * Depend on swfdec-0.1.2-3, since it had a bug. + + -- David Schleef Tue, 12 Nov 2002 17:43:48 -0800 + +gst-plugins (0.4.2-1) unstable; urgency=low + + * New upstream + * Add libpng2-dev to Build-Depends for snapshot + * Add smpte, snapshot, and wavenc to gstreamer-misc + * Add video and play libs to gstreamer-plugin-libs{-dev} + * Add gstreamer-swfdec plugin package + * Add hack to swfdec plugin to not segfault when avifile also loaded due to + symbols conflicts. This annoyance will spew errors during gst-compprep + and probably will cause errors in apps that use both swfdec and avifile. + * Tighten dependency on libgstreamer until upstream code can deal with + multiple plugin versions and upgrades better + * Move gstreamer-plugin-apps to Section: utils from x11 + + -- David I. Lehn Wed, 6 Nov 2002 21:41:01 -0500 + +gst-plugins (0.4.1-1) unstable; urgency=low + + * New upstream + * Update FLAC dependency to 1.0.4 and add support patch from CVS + * Rebuild for libflac4 (Closes: Bug#163549) + * Build gconf code as a library rather than a plugin + * Improved plugin descriptions + * Added to -misc: cdplayer, videocrop, videotestsrc, mixmatrix + * Add autotools-dev to Build-Depends + * Update config.{guess,sub} + + -- David I. Lehn Mon, 7 Oct 2002 17:51:43 -0400 + +gst-plugins (0.4.0.2-cvs20020919-1) unstable; urgency=low + + * CVS snapshot, release branch + * gstreamer-gconf.files: libgstgconf.so moved to /usr/lib + * added control.in, build-deps, and mk.control script. Edit control.in + and/or build-deps, and run 'debian/rules debian/control' from toplevel + directory to recreate debian/control. This should make it a lot + easier to diff build dependencies. + + -- David Schleef Thu, 19 Sep 2002 15:18:41 -0700 + +gst-plugins (0.4.0-5) unstable; urgency=low + + * Update Build-Depends + * Use pkg-config checking vs m4 macros for libdv + + -- David I. Lehn Fri, 23 Aug 2002 10:33:29 -0400 + +gst-plugins (0.4.0-4) unstable; urgency=low + + * Fixes from CVS for gstgnomevfssrc.c and endian issue in vorbisfile.c + + -- David I. Lehn Fri, 2 Aug 2002 20:51:38 -0400 + +gst-plugins (0.4.0-3) unstable; urgency=low + + * Add ladspa-sdk to Build-Depends + * Removed qcam plugin from -misc. + It's i386 only and probably not widely used. Will figure out how to + package in the future if someone needs it. + + -- David I. Lehn Mon, 29 Jul 2002 16:32:33 -0400 + +gst-plugins (0.4.0-2) unstable; urgency=low + + * Clean up the Build-Depends: + - stricter versioning + - remove gnome deps (used for examples which are not build now) + * Fix segfault in vorbis.m4 check + + -- David I. Lehn Mon, 29 Jul 2002 10:47:12 -0400 + +gst-plugins (0.4.0-1) unstable; urgency=low + + * New upstream + * FLAC compile fixes from CVS + * DV comiled fixes + * Upated ltmain hack + * autogen.sh with more recent tools + * Update config.{guess,sub} + * Added plugin packages: -gconf, -http, -jack, -dv + * Added dvdnav plugin to -dvd + * Removed osshelper plugin from -oss + * Added xvideosink back to -x + * Added effectv, filter, and qtdemux plugins to -misc + * Rename gstreamer-lib-misc{-dev} to gstreamer-plugin-libs{-dev} to match + gstreamer core. + * Added gstreamer-plugin-apps package for a lonely 2 scripts + * Renamed gstreamer-all to gstreamer-plugins + + -- David I. Lehn Tue, 16 Jul 2002 02:10:07 -0400 + +gst-plugins (0.3.4-2) unstable; urgency=low + + * Rebuild for new avifile + + -- David I. Lehn Wed, 24 Apr 2002 14:06:46 -0400 + +gst-plugins (0.3.4-1) unstable; urgency=low + + * New upstream + * Fix mpeg2dec.m4 to use newer mpeg2dec libs + + -- David I. Lehn Mon, 15 Apr 2002 03:34:21 -0400 + +gst-plugins (0.3.3-2) unstable; urgency=low + + * Port a52dec plugin to 0.7.3 API (applied upstream) + * Use a52dec packages in Debian vs current external ones + * This switches a52dec plugin to static linking + * Remove LAME support + * No LAME packages in Debian to depend on + * Added explanation in README.Debian since this will likely + cause no end of "Why is there no LAME plugin?" + * Depend on and rebuild for mpeg2dec 0.2.1 + * Depend on and rebuild for glib 2.0 + * Remove gtk from Build-Depends: (not needed for the built plugins) + + -- David I. Lehn Sat, 23 Mar 2002 17:52:03 -0500 + +gst-plugins (0.3.3-1) unstable; urgency=low + + * New upstream version + * SDL fixed upstream, remove patch + * Require libid3tag for mad support + * Remove xvideosink from gstreamer-x package in favor of videosink + Needed to be removed due to symbol conflicts with videosink + * Sync with upstream changes: + * Added videosink to gstreamer-x package + * parseau renamed to auparse in -misc + * Added various plugins to -misc: goom, monoscope, modplug, ... + * Note: new upstream scripts gst-launch-ext and gst-visualise not + packaged yet + + -- David I. Lehn Thu, 21 Mar 2002 02:06:21 -0500 + +gst-plugins (0.3.2-3) unstable; urgency=low + + * Rebuild for glib/gtk 1.3.15 + + -- David I. Lehn Mon, 25 Feb 2002 00:06:51 -0500 + +gst-plugins (0.3.2-2) unstable; urgency=low + + * Build against liblinc1 and newer gnomevfs + + -- David I. Lehn Sun, 17 Feb 2002 15:52:57 -0500 + +gst-plugins (0.3.2-1) unstable; urgency=low + + * New upstream release + * Many diffs merged upstream + * Unversioned plugins upstream, just packaging .so (no .la, .a) + * Added cdxa plugin to -misc + * Various plugins in -misc moved around and merged upstream + + -- David I. Lehn Fri, 15 Feb 2002 21:54:27 -0500 + +gst-plugins (0.3.1-4) unstable; urgency=low + + * Rebuild for glib/gtk 1.3.13 + + -- David I. Lehn Wed, 6 Feb 2002 02:16:16 -0500 + +gst-plugins (0.3.1-3) unstable; urgency=low + + * Fix arts symbol problem (add -lartsflow -lartsflow_idl) + * Replace m4/gst-sdl.m4 with Debian's sdl.m4 + * Use SDL_LIBS_FOR_PLUGINS instead of SDL_LIBS + + -- David I. Lehn Wed, 23 Jan 2002 12:37:00 -0500 + +gst-plugins (0.3.1-2) unstable; urgency=low + + * Rebuild against fixed gstreamer.pc in libgst-dev 0.3.1-2 + Should just link to libxml2 now rather than v1 and v2 + + -- David I. Lehn Wed, 23 Jan 2002 02:29:49 -0500 + +gst-plugins (0.3.1-1) unstable; urgency=low + + * Upstream split plugins into new package + * Upstream removed mpg123 plugin - use mad plugin + * Upstream removed ac3dec plugin - use a52dec + * Added -lib-misc and -lib-misc-dev packages for + library plugins and headers + * Patch to link all plugins to GST_LIBS + + -- David I. Lehn Fri, 11 Jan 2002 11:22:01 -0500 + +gstreamer (0.3.0-3) unstable; urgency=low + + * Remove upstream ChangeLog from packages: 128k changelog.gz per + plugin package for 40 packages is too much + + -- David I. Lehn Tue, 25 Dec 2001 23:36:28 -0500 + +gstreamer (0.3.0-2) unstable; urgency=low + + * Fix bug that slipped into 0.3.0: s/aasink/xvideosink/ in + gstplay/gstplay.c + + -- David I. Lehn Tue, 25 Dec 2001 17:56:29 -0500 + +gstreamer (0.3.0-1) unstable; urgency=low + + * New upstream release + * Attempt to update various Build-Depends versions + * Added plugin packages: -a52dec, -dvd, -mikmod, -sid + * Renamed -elements to -core + * Added to -core: gstbasicscheduler + * Moved from -common to -core: gsttypes, autoplug related + * Renamed -common to -misc + * Added to -misc: speed, qcam, bytesteram, control, silence, sinesrc, + mpegstream, playondemand, resample + * Added gstreamer-guilaunch to gstreamer-tools package + * Added dependencies on unofficial LAME packages + * Use PIC libs for Xv + * Disable broken building of PDF/PS docs + * Renamed -all-plugins to -all + * Disable docs -- too hard to build + + -- David I. Lehn Fri, 21 Dec 2001 12:00:02 -0500 + +gstreamer (0.2.1-4) unstable; urgency=low + + * Fix some problems reported from lintian 1.20.14: + * copyright-lists-upstream-authors-like-dh_make + * debian-changelog-file-contains-user-emacs-settings + * Patch from CVS to link libgst into plugins + Plugins now properly depend on libgst package + * Use RedHat Gtk+-1.3 hack to fix relink issues with ltmain.sh + * Patch from CVS for xvideosink segfault when no DISPLAY set + * Remove builddir references from gstreamer-config.in + * Move libgstelements.la from libgst-dev to gstreamer-elements + + -- David I. Lehn Tue, 28 Aug 2001 20:05:28 -0400 + +gstreamer (0.2.1-3) unstable; urgency=low + + * Update build dependencies to FLAC 1.0 + * Enable debug features + * Fixup broken doc build -scan voodoo with link into .libs/ dir + + -- David I. Lehn Sun, 5 Aug 2001 23:04:28 -0400 + +gstreamer (0.2.1-2) unstable; urgency=low + + * Fix lib deps: run debhelper tools in the right order + * Added arts dir to Makefile.am SUBDIRS so it builds again + * Changed libmpeg2dec to libgstmpeg2dec to avoid naming issues + when using -lmpeg2dec + * Updated system_encode/ with CVS segfaulter bug fix + + -- David I. Lehn Thu, 19 Jul 2001 15:47:24 -0400 + +gstreamer (0.2.1-1) unstable; urgency=low + + * New upstream 0.2.1: "Return of the Sedi Master" + * New plugin packages: -festival, -flac, -avifile, -x + * New plugins in -common: chart, deinterlace, udp + * Added some post-0.2.1 fixes for FLAC, build system, ALSA + + -- David I. Lehn Thu, 28 Jun 2001 20:15:15 -0400 + +gstreamer (0.2.0-6) unstable; urgency=low + + * Move -compprep to -runtime and call it same places as -register + * Do -register and -compprep in postrm instead of prerm + * Make -arts plugin actually build all the source (sent upstream) + * Purge of -runtime removes /etc/gstreamer + + -- David I. Lehn Tue, 19 Jun 2001 13:09:32 -0400 + +gstreamer (0.2.0-5) unstable; urgency=low + + * Added element package dependencies to libgstmediaplay0 + + -- David I. Lehn Mon, 18 Jun 2001 11:18:53 -0400 + +gstreamer (0.2.0-4) unstable; urgency=low + + * Add --gst-mask=0 to -runtime.postinst + + -- David I. Lehn Fri, 15 Jun 2001 11:47:24 -0400 + +gstreamer (0.2.0-3) unstable; urgency=low + + * Fix the plugin control file symlink creation + * Add audiofile to Build-Depends + + -- David I. Lehn Fri, 15 Jun 2001 05:22:28 -0400 + +gstreamer (0.2.0-2) unstable; urgency=low + + * Fixed ALSA checks to not include -lasound in -every- link + * Update LAME plugin to use latest CVS API + * Removed OSS src/sink from -common.files (was in -oss too) + * Swapped -arts.files and -artsd.files contents + + -- David I. Lehn Fri, 15 Jun 2001 04:02:21 -0400 + +gstreamer (0.2.0-1) unstable; urgency=low + + * Added gstreamer-compprep manpage + * Upgrade to 0.2.0 + + -- David I. Lehn Thu, 7 Jun 2001 12:53:59 -0400 + +gstreamer (0.2.0-0.3) unstable; urgency=low + + * GStreamer 0.2.0-pre3 + + -- David I. Lehn Wed, 6 Jun 2001 15:09:59 -0400 + +gstreamer (0.2.0-0.2) unstable; urgency=low + + * GStreamer 0.2.0-pre2 + CVS 20010604 + * Added -artsd (vs -arts), -audiofile, -gnomevfs, -gsm, -jpeg, + -oss, and -sdl plugin packages + * Added osshelper lib to oss package + * Added more AVI related plugins and autoplug libs to -common + * Added pkgconfig file to libgst-dev + * Added gstreamer-all-plugins pseudo package that depends on + all other plugin pacakges + + -- David I. Lehn Mon, 4 Jun 2001 17:33:20 -0400 + +gstreamer (0.2.0-0.1) unstable; urgency=low + + * GStreamer 0.2.0-pre1 + + -- David I. Lehn Thu, 31 May 2001 17:16:23 -0400 + +gstreamer (0.1.1.20010504-1) unstable; urgency=low + + * Latest CVS code + + -- David I. Lehn Fri, 4 May 2001 21:48:45 -0400 + +gstreamer (0.1.1.20010430-2) unstable; urgency=low + + * Added -colorspace package for Hermes dependent conversion + * Added -arts package for aRts sink + + -- David I. Lehn Tue, 1 May 2001 19:46:08 -0400 + +gstreamer (0.1.1.20010430-1) unstable; urgency=low + + * Latest CVS code + * Added -aa package for aasink output + * Added -mad package for mad mp3 decoder + + -- David I. Lehn Mon, 30 Apr 2001 18:25:52 -0400 + +gstreamer (0.1.1.20010320-1) unstable; urgency=low + + * Latest CVS code + * enable main docs + * disable broken plugin docs with new option + + -- David I. Lehn Tue, 20 Mar 2001 18:15:19 -0500 + +gstreamer (0.1.1.20010315-1) unstable; urgency=low + + * Latest CVS code + * Added man pages + * Split mpeg2dec to seperate plugin + * libgst Architectures updated to cothread supported archs + + -- David I. Lehn Thu, 15 Mar 2001 20:17:19 -0500 + +gstreamer (0.1.1-1) unstable; urgency=low + + * New upstream release + * disable docs build, broken at the momemnt + + -- David I. Lehn Sun, 25 Feb 2001 17:58:25 -0500 + +gstreamer (0.1.0-2) unstable; urgency=low + + * debian/rules: call configure instead of autogen.sh + + -- David I. Lehn Sat, 24 Feb 2001 18:31:36 -0500 + +gstreamer (0.1.0-1) unstable; urgency=low + + * Initial Release. + + -- David I. Lehn Mon, 15 Jan 2001 18:25:18 -0500 --- gst-plugins-base0.10-0.10.25.orig/debian/README.Debian +++ gst-plugins-base0.10-0.10.25/debian/README.Debian @@ -0,0 +1,64 @@ +Gstreamer for Debian +==================== +This package contains the GStreamer plugin distribution. + +More information can be found at http://gstreamer.net/ + +As of GStreamer plugins version 0.8.0 all packages are versioned and +parallel installable with other releases with other major.minor +versions. For example, 0.8.x series is versioned as 0.8 and parallel +installable with both unversioned 0.6.x series and future 0.9.x and +beyond. The version part is represented as VER below. + +GStreamer plugins are split into a number of packages: + +plugins without external dependencies: + + gstreamerVER-misc many independent plugins + +plugins with external dependencies: + + gstreamerVER-alsa + gstreamerVER-gnomevfs + gstreamerVER-x + +libraries and library plugins: + + libgstreamer-plugins-baseVER-# various libs + libgstreamer-plugins-baseVER-dev development files for above package + +documentation: + + gstreamerVER-plugins-base-doc html documentation + +applications: + + gstreamerVER-plugins-base-apps small script apps to using gst-launch + + +Notes +===== + +ChangeLog +--------- + +The upstream ChangeLog is not included in all the plugin packages due to its +large size. Please see upstream sources if you are interested in detailed +source changes. + +External tools support +---------------------- + +Your favorite codec isn't wrapped as a plugin? External programs can be +used to process streams. Take a look at "pipefilter" element or try +something like this (untested): + + $ mkfifo fifo + $ gst-launch myaudiosrc ! filesink location=fifo & + $ cat fifo | my_encoder > output_file + + +David I. Lehn Tue, 23 Mar 2004 04:38:37 -0500 + +update: +Sebastien Bacher Wed, 14 Dec 2005 17:00:21 +0100 --- gst-plugins-base0.10-0.10.25.orig/debian/libgstreamer-plugins-base.symbols +++ gst-plugins-base0.10-0.10.25/debian/libgstreamer-plugins-base.symbols @@ -0,0 +1,681 @@ +libgstapp-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_app_buffer_get_type@Base 0.10.22 + gst_app_buffer_new@Base 0.10.22 + gst_app_sink_get_caps@Base 0.10.22 + gst_app_sink_get_drop@Base 0.10.22 + gst_app_sink_get_emit_signals@Base 0.10.22 + gst_app_sink_get_max_buffers@Base 0.10.22 + gst_app_sink_get_type@Base 0.10.22 + gst_app_sink_is_eos@Base 0.10.22 + gst_app_sink_pull_buffer@Base 0.10.22 + gst_app_sink_pull_buffer_list@Base 0.10.24 + gst_app_sink_pull_preroll@Base 0.10.22 + gst_app_sink_set_callbacks@Base 0.10.23 + gst_app_sink_set_caps@Base 0.10.22 + gst_app_sink_set_drop@Base 0.10.22 + gst_app_sink_set_emit_signals@Base 0.10.22 + gst_app_sink_set_max_buffers@Base 0.10.22 + gst_app_src_end_of_stream@Base 0.10.22 + gst_app_src_get_caps@Base 0.10.22 + gst_app_src_get_emit_signals@Base 0.10.23 + gst_app_src_get_latency@Base 0.10.22 + gst_app_src_get_max_bytes@Base 0.10.22 + gst_app_src_get_size@Base 0.10.22 + gst_app_src_get_stream_type@Base 0.10.22 + gst_app_src_get_type@Base 0.10.22 + gst_app_src_push_buffer@Base 0.10.22 + gst_app_src_set_callbacks@Base 0.10.23 + gst_app_src_set_caps@Base 0.10.22 + gst_app_src_set_emit_signals@Base 0.10.23 + gst_app_src_set_latency@Base 0.10.22 + gst_app_src_set_max_bytes@Base 0.10.22 + gst_app_src_set_size@Base 0.10.22 + gst_app_src_set_stream_type@Base 0.10.22 +libgstaudio-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_audio_buffer_clip@Base 0.10.14 + gst_audio_channel_position_get_type@Base 0.10.0 + gst_audio_check_channel_positions@Base 0.10.20 + gst_audio_clock_adjust@Base 0.10.23 + gst_audio_clock_get_time@Base 0.10.23 + gst_audio_clock_get_type@Base 0.10.0 + gst_audio_clock_new@Base 0.10.0 + gst_audio_clock_reset@Base 0.10.20 + gst_audio_default_registry_mixer_filter@Base 0.10.2 + gst_audio_duration_from_pad_buffer@Base 0.10.0 + gst_audio_filter_class_add_pad_templates@Base 0.10.0 + gst_audio_filter_get_type@Base 0.10.0 + gst_audio_fixate_channel_positions@Base 0.10.0 + gst_audio_frame_byte_size@Base 0.10.0 + gst_audio_frame_length@Base 0.10.0 + gst_audio_get_channel_positions@Base 0.10.0 + gst_audio_is_buffer_framed@Base 0.10.0 + gst_audio_set_caps_channel_positions_list@Base 0.10.0 + gst_audio_set_channel_positions@Base 0.10.0 + gst_audio_set_structure_channel_positions_list@Base 0.10.0 + gst_audio_sink_get_type@Base 0.10.0 + gst_audio_src_get_type@Base 0.10.0 + gst_audio_structure_set_int@Base 0.10.0 + gst_base_audio_sink_create_ringbuffer@Base 0.10.0 + gst_base_audio_sink_get_provide_clock@Base 0.10.16 + gst_base_audio_sink_get_slave_method@Base 0.10.16 + gst_base_audio_sink_get_type@Base 0.10.0 + gst_base_audio_sink_set_provide_clock@Base 0.10.16 + gst_base_audio_sink_set_slave_method@Base 0.10.16 + gst_base_audio_sink_slave_method_get_type@Base 0.10.22 + gst_base_audio_src_create_ringbuffer@Base 0.10.0 + gst_base_audio_src_get_provide_clock@Base 0.10.16 + gst_base_audio_src_get_slave_method@Base 0.10.20 + gst_base_audio_src_get_type@Base 0.10.0 + gst_base_audio_src_set_provide_clock@Base 0.10.16 + gst_base_audio_src_set_slave_method@Base 0.10.20 + gst_base_audio_src_slave_method_get_type@Base 0.10.22 + gst_buffer_format_get_type@Base 0.10.22 + gst_buffer_format_type_get_type@Base 0.10.22 + gst_ring_buffer_acquire@Base 0.10.0 + gst_ring_buffer_activate@Base 0.10.22 + gst_ring_buffer_advance@Base 0.10.0 + gst_ring_buffer_clear@Base 0.10.0 + gst_ring_buffer_clear_all@Base 0.10.0 + gst_ring_buffer_close_device@Base 0.10.0 + gst_ring_buffer_commit@Base 0.10.0 + gst_ring_buffer_commit_full@Base 0.10.11 + gst_ring_buffer_convert@Base 0.10.22 + gst_ring_buffer_debug_spec_buff@Base 0.10.0 + gst_ring_buffer_debug_spec_caps@Base 0.10.0 + gst_ring_buffer_delay@Base 0.10.0 + gst_ring_buffer_device_is_open@Base 0.10.0 + gst_ring_buffer_get_type@Base 0.10.0 + gst_ring_buffer_is_acquired@Base 0.10.0 + gst_ring_buffer_is_active@Base 0.10.22 + gst_ring_buffer_may_start@Base 0.10.6 + gst_ring_buffer_open_device@Base 0.10.0 + gst_ring_buffer_parse_caps@Base 0.10.0 + gst_ring_buffer_pause@Base 0.10.0 + gst_ring_buffer_prepare_read@Base 0.10.0 + gst_ring_buffer_read@Base 0.10.0 + gst_ring_buffer_release@Base 0.10.0 + gst_ring_buffer_samples_done@Base 0.10.0 + gst_ring_buffer_seg_state_get_type@Base 0.10.22 + gst_ring_buffer_set_callback@Base 0.10.0 + gst_ring_buffer_set_flushing@Base 0.10.0 + gst_ring_buffer_set_sample@Base 0.10.0 + gst_ring_buffer_start@Base 0.10.0 + gst_ring_buffer_state_get_type@Base 0.10.22 + gst_ring_buffer_stop@Base 0.10.0 +libgstcdda-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_cdda_base_src_add_track@Base 0.10.2 + gst_cdda_base_src_get_type@Base 0.10.2 + gst_cdda_base_src_mode_get_type@Base 0.10.22 +libgstfft-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_fft_f32_fft@Base 0.10.15 + gst_fft_f32_free@Base 0.10.15 + gst_fft_f32_inverse_fft@Base 0.10.15 + gst_fft_f32_new@Base 0.10.15 + gst_fft_f32_window@Base 0.10.15 + gst_fft_f64_fft@Base 0.10.15 + gst_fft_f64_free@Base 0.10.15 + gst_fft_f64_inverse_fft@Base 0.10.15 + gst_fft_f64_new@Base 0.10.15 + gst_fft_f64_window@Base 0.10.15 + gst_fft_next_fast_length@Base 0.10.15 + gst_fft_s16_fft@Base 0.10.15 + gst_fft_s16_free@Base 0.10.15 + gst_fft_s16_inverse_fft@Base 0.10.15 + gst_fft_s16_new@Base 0.10.15 + gst_fft_s16_window@Base 0.10.15 + gst_fft_s32_fft@Base 0.10.15 + gst_fft_s32_free@Base 0.10.15 + gst_fft_s32_inverse_fft@Base 0.10.15 + gst_fft_s32_new@Base 0.10.15 + gst_fft_s32_window@Base 0.10.15 +libgstinterfaces-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_color_balance_channel_get_type@Base 0.10.0 + gst_color_balance_get_balance_type@Base 0.10.24 + gst_color_balance_get_type@Base 0.10.0 + gst_color_balance_get_value@Base 0.10.0 + gst_color_balance_list_channels@Base 0.10.0 + gst_color_balance_set_value@Base 0.10.0 + gst_color_balance_type_get_type@Base 0.10.0 + gst_color_balance_value_changed@Base 0.10.0 + gst_interfaces_marshal_VOID__OBJECT_BOOLEAN@Base 0.10.0 + gst_interfaces_marshal_VOID__OBJECT_INT@Base 0.10.0 + gst_interfaces_marshal_VOID__OBJECT_POINTER@Base 0.10.0 + gst_interfaces_marshal_VOID__OBJECT_STRING@Base 0.10.0 + gst_interfaces_marshal_VOID__OBJECT_ULONG@Base 0.10.0 + gst_mixer_flags_get_type@Base 0.10.14 + gst_mixer_get_mixer_flags@Base 0.10.14 + gst_mixer_get_mixer_type@Base 0.10.24 + gst_mixer_get_option@Base 0.10.0 + gst_mixer_get_type@Base 0.10.0 + gst_mixer_get_volume@Base 0.10.0 + gst_mixer_list_tracks@Base 0.10.0 + gst_mixer_message_get_type@Base 0.10.14 + gst_mixer_message_parse_mute_toggled@Base 0.10.14 + gst_mixer_message_parse_option_changed@Base 0.10.14 + gst_mixer_message_parse_options_list_changed@Base 0.10.18 + gst_mixer_message_parse_record_toggled@Base 0.10.14 + gst_mixer_message_parse_volume_changed@Base 0.10.14 + gst_mixer_message_type_get_type@Base 0.10.14 + gst_mixer_mixer_changed@Base 0.10.18 + gst_mixer_mute_toggled@Base 0.10.0 + gst_mixer_option_changed@Base 0.10.0 + gst_mixer_options_get_type@Base 0.10.0 + gst_mixer_options_get_values@Base 0.10.0 + gst_mixer_options_list_changed@Base 0.10.18 + gst_mixer_record_toggled@Base 0.10.0 + gst_mixer_set_mute@Base 0.10.0 + gst_mixer_set_option@Base 0.10.0 + gst_mixer_set_record@Base 0.10.0 + gst_mixer_set_volume@Base 0.10.0 + gst_mixer_track_flags_get_type@Base 0.10.0 + gst_mixer_track_get_type@Base 0.10.0 + gst_mixer_type_get_type@Base 0.10.0 + gst_mixer_volume_changed@Base 0.10.0 + gst_navigation_command_get_type@Base 0.10.23 + gst_navigation_event_get_type@Base 0.10.23 + gst_navigation_event_parse_command@Base 0.10.23 + gst_navigation_event_parse_key_event@Base 0.10.23 + gst_navigation_event_parse_mouse_button_event@Base 0.10.23 + gst_navigation_event_parse_mouse_move_event@Base 0.10.23 + gst_navigation_event_type_get_type@Base 0.10.23 + gst_navigation_get_type@Base 0.10.0 + gst_navigation_message_get_type@Base 0.10.23 + gst_navigation_message_new_angles_changed@Base 0.10.23 + gst_navigation_message_new_commands_changed@Base 0.10.23 + gst_navigation_message_new_mouse_over@Base 0.10.23 + gst_navigation_message_parse_angles_changed@Base 0.10.23 + gst_navigation_message_parse_mouse_over@Base 0.10.23 + gst_navigation_message_type_get_type@Base 0.10.23 + gst_navigation_query_get_type@Base 0.10.23 + gst_navigation_query_new_angles@Base 0.10.23 + gst_navigation_query_new_commands@Base 0.10.23 + gst_navigation_query_parse_angles@Base 0.10.23 + gst_navigation_query_parse_commands_length@Base 0.10.23 + gst_navigation_query_parse_commands_nth@Base 0.10.23 + gst_navigation_query_set_angles@Base 0.10.23 + gst_navigation_query_set_commands@Base 0.10.23 + gst_navigation_query_set_commandsv@Base 0.10.23 + gst_navigation_query_type_get_type@Base 0.10.23 + gst_navigation_send_command@Base 0.10.23 + gst_navigation_send_event@Base 0.10.0 + gst_navigation_send_key_event@Base 0.10.0 + gst_navigation_send_mouse_event@Base 0.10.0 + gst_property_probe_get_properties@Base 0.10.0 + gst_property_probe_get_property@Base 0.10.0 + gst_property_probe_get_type@Base 0.10.0 + gst_property_probe_get_values@Base 0.10.0 + gst_property_probe_get_values_name@Base 0.10.0 + gst_property_probe_needs_probe@Base 0.10.0 + gst_property_probe_needs_probe_name@Base 0.10.0 + gst_property_probe_probe_and_get_values@Base 0.10.0 + gst_property_probe_probe_and_get_values_name@Base 0.10.0 + gst_property_probe_probe_property@Base 0.10.0 + gst_property_probe_probe_property_name@Base 0.10.0 + gst_stream_volume_convert_volume@Base 0.10.25 + gst_stream_volume_format_get_type@Base 0.10.25 + gst_stream_volume_get_mute@Base 0.10.25 + gst_stream_volume_get_type@Base 0.10.25 + gst_stream_volume_get_volume@Base 0.10.25 + gst_stream_volume_set_mute@Base 0.10.25 + gst_stream_volume_set_volume@Base 0.10.25 + gst_tuner_channel_changed@Base 0.10.0 + gst_tuner_channel_flags_get_type@Base 0.10.0 + gst_tuner_channel_get_type@Base 0.10.0 + gst_tuner_find_channel_by_name@Base 0.10.0 + gst_tuner_find_norm_by_name@Base 0.10.0 + gst_tuner_frequency_changed@Base 0.10.0 + gst_tuner_get_channel@Base 0.10.0 + gst_tuner_get_frequency@Base 0.10.0 + gst_tuner_get_norm@Base 0.10.0 + gst_tuner_get_type@Base 0.10.0 + gst_tuner_list_channels@Base 0.10.0 + gst_tuner_list_norms@Base 0.10.0 + gst_tuner_norm_changed@Base 0.10.0 + gst_tuner_norm_get_type@Base 0.10.0 + gst_tuner_set_channel@Base 0.10.0 + gst_tuner_set_frequency@Base 0.10.0 + gst_tuner_set_norm@Base 0.10.0 + gst_tuner_signal_changed@Base 0.10.0 + gst_tuner_signal_strength@Base 0.10.0 + gst_video_orientation_get_hcenter@Base 0.10.11 + gst_video_orientation_get_hflip@Base 0.10.11 + gst_video_orientation_get_type@Base 0.10.11 + gst_video_orientation_get_vcenter@Base 0.10.11 + gst_video_orientation_get_vflip@Base 0.10.11 + gst_video_orientation_set_hcenter@Base 0.10.11 + gst_video_orientation_set_hflip@Base 0.10.11 + gst_video_orientation_set_vcenter@Base 0.10.11 + gst_video_orientation_set_vflip@Base 0.10.11 + gst_x_overlay_expose@Base 0.10.0 + gst_x_overlay_get_type@Base 0.10.0 + gst_x_overlay_got_xwindow_id@Base 0.10.0 + gst_x_overlay_handle_events@Base 0.10.12 + gst_x_overlay_prepare_xwindow_id@Base 0.10.0 + gst_x_overlay_set_xwindow_id@Base 0.10.0 +libgstnetbuffer-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_netaddress_get_address_bytes@Base 0.10.22 + gst_netaddress_get_ip4_address@Base 0.10.0 + gst_netaddress_get_ip6_address@Base 0.10.0 + gst_netaddress_get_net_type@Base 0.10.0 + gst_netaddress_set_address_bytes@Base 0.10.22 + gst_netaddress_set_ip4_address@Base 0.10.0 + gst_netaddress_set_ip6_address@Base 0.10.0 + gst_netaddress_equal@Base 0.10.18 + gst_netaddress_to_string@Base 0.10.24 + gst_netbuffer_get_type@Base 0.10.0 + gst_netbuffer_new@Base 0.10.0 +libgstpbutils-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_install_plugins_async@Base 0.10.12 + gst_install_plugins_context_free@Base 0.10.12 + gst_install_plugins_context_get_type@Base 0.10.16 + gst_install_plugins_context_new@Base 0.10.12 + gst_install_plugins_context_set_xid@Base 0.10.12 + gst_install_plugins_installation_in_progress@Base 0.10.12 + gst_install_plugins_return_get_name@Base 0.10.12 + gst_install_plugins_return_get_type@Base 0.10.16 + gst_install_plugins_supported@Base 0.10.15 + gst_install_plugins_sync@Base 0.10.12 + gst_is_missing_plugin_message@Base 0.10.12 + gst_missing_decoder_installer_detail_new@Base 0.10.15 + gst_missing_decoder_message_new@Base 0.10.12 + gst_missing_element_installer_detail_new@Base 0.10.15 + gst_missing_element_message_new@Base 0.10.12 + gst_missing_encoder_installer_detail_new@Base 0.10.15 + gst_missing_encoder_message_new@Base 0.10.12 + gst_missing_plugin_message_get_description@Base 0.10.12 + gst_missing_plugin_message_get_installer_detail@Base 0.10.12 + gst_missing_uri_sink_installer_detail_new@Base 0.10.15 + gst_missing_uri_sink_message_new@Base 0.10.12 + gst_missing_uri_source_installer_detail_new@Base 0.10.15 + gst_missing_uri_source_message_new@Base 0.10.12 + gst_pb_utils_add_codec_description_to_tag_list@Base 0.10.12 + gst_pb_utils_get_codec_description@Base 0.10.12 + gst_pb_utils_get_decoder_description@Base 0.10.12 + gst_pb_utils_get_element_description@Base 0.10.12 + gst_pb_utils_get_encoder_description@Base 0.10.12 + gst_pb_utils_get_sink_description@Base 0.10.12 + gst_pb_utils_get_source_description@Base 0.10.12 + gst_pb_utils_init@Base 0.10.12 +libgstriff-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_riff_create_audio_caps@Base 0.10.0 + gst_riff_create_audio_template_caps@Base 0.10.0 + gst_riff_create_iavs_caps@Base 0.10.0 + gst_riff_create_iavs_template_caps@Base 0.10.0 + gst_riff_create_video_caps@Base 0.10.0 + gst_riff_create_video_template_caps@Base 0.10.0 + gst_riff_init@Base 0.10.0 + gst_riff_parse_chunk@Base 0.10.0 + gst_riff_parse_file_header@Base 0.10.0 + gst_riff_parse_info@Base 0.10.0 + gst_riff_parse_strf_auds@Base 0.10.0 + gst_riff_parse_strf_iavs@Base 0.10.0 + gst_riff_parse_strf_vids@Base 0.10.0 + gst_riff_parse_strh@Base 0.10.0 + gst_riff_read_chunk@Base 0.10.0 +libgstrtp-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_base_rtp_audio_payload_flush@Base 0.10.25 + gst_base_rtp_audio_payload_get_adapter@Base 0.10.13 + gst_base_rtp_audio_payload_get_type@Base 0.10.11 + gst_base_rtp_audio_payload_push@Base 0.10.13 + gst_base_rtp_audio_payload_set_frame_based@Base 0.10.11 + gst_base_rtp_audio_payload_set_frame_options@Base 0.10.11 + gst_base_rtp_audio_payload_set_sample_based@Base 0.10.11 + gst_base_rtp_audio_payload_set_sample_options@Base 0.10.11 + gst_base_rtp_audio_payload_set_samplebits_options@Base 0.10.18 + gst_base_rtp_depayload_get_type@Base 0.10.0 + gst_base_rtp_depayload_push@Base 0.10.11 + gst_base_rtp_depayload_push_ts@Base 0.10.11 + gst_basertppayload_get_type@Base 0.10.0 + gst_basertppayload_is_filled@Base 0.10.0 + gst_basertppayload_push@Base 0.10.0 + gst_basertppayload_push_list@Base 0.10.24 + gst_basertppayload_set_options@Base 0.10.0 + gst_basertppayload_set_outcaps@Base 0.10.0 + gst_rtcp_buffer_add_packet@Base 0.10.13 + gst_rtcp_buffer_end@Base 0.10.13 + gst_rtcp_buffer_get_first_packet@Base 0.10.13 + gst_rtcp_buffer_get_packet_count@Base 0.10.13 + gst_rtcp_buffer_new@Base 0.10.13 + gst_rtcp_buffer_new_copy_data@Base 0.10.13 + gst_rtcp_buffer_new_take_data@Base 0.10.13 + gst_rtcp_buffer_validate@Base 0.10.13 + gst_rtcp_buffer_validate_data@Base 0.10.13 + gst_rtcp_ntp_to_unix@Base 0.10.15 + gst_rtcp_packet_add_rb@Base 0.10.13 + gst_rtcp_packet_bye_add_ssrc@Base 0.10.13 + gst_rtcp_packet_bye_add_ssrcs@Base 0.10.13 + gst_rtcp_packet_bye_get_nth_ssrc@Base 0.10.13 + gst_rtcp_packet_bye_get_reason@Base 0.10.13 + gst_rtcp_packet_bye_get_reason_len@Base 0.10.13 + gst_rtcp_packet_bye_get_ssrc_count@Base 0.10.13 + gst_rtcp_packet_bye_set_reason@Base 0.10.13 + gst_rtcp_packet_fb_get_media_ssrc@Base 0.10.23 + gst_rtcp_packet_fb_get_sender_ssrc@Base 0.10.23 + gst_rtcp_packet_fb_get_type@Base 0.10.23 + gst_rtcp_packet_fb_set_media_ssrc@Base 0.10.23 + gst_rtcp_packet_fb_set_sender_ssrc@Base 0.10.23 + gst_rtcp_packet_fb_set_type@Base 0.10.23 + gst_rtcp_packet_get_count@Base 0.10.13 + gst_rtcp_packet_get_length@Base 0.10.13 + gst_rtcp_packet_get_padding@Base 0.10.13 + gst_rtcp_packet_get_rb@Base 0.10.13 + gst_rtcp_packet_get_rb_count@Base 0.10.13 + gst_rtcp_packet_get_type@Base 0.10.13 + gst_rtcp_packet_move_to_next@Base 0.10.13 + gst_rtcp_packet_remove@Base 0.10.13 + gst_rtcp_packet_rr_get_ssrc@Base 0.10.13 + gst_rtcp_packet_rr_set_ssrc@Base 0.10.13 + gst_rtcp_packet_sdes_add_entry@Base 0.10.13 + gst_rtcp_packet_sdes_add_item@Base 0.10.13 + gst_rtcp_packet_sdes_copy_entry@Base 0.10.15 + gst_rtcp_packet_sdes_first_entry@Base 0.10.13 + gst_rtcp_packet_sdes_first_item@Base 0.10.13 + gst_rtcp_packet_sdes_get_entry@Base 0.10.13 + gst_rtcp_packet_sdes_get_item_count@Base 0.10.13 + gst_rtcp_packet_sdes_get_ssrc@Base 0.10.13 + gst_rtcp_packet_sdes_next_entry@Base 0.10.13 + gst_rtcp_packet_sdes_next_item@Base 0.10.13 + gst_rtcp_packet_set_rb@Base 0.10.13 + gst_rtcp_packet_sr_get_sender_info@Base 0.10.13 + gst_rtcp_packet_sr_set_sender_info@Base 0.10.13 + gst_rtcp_unix_to_ntp@Base 0.10.15 + gst_rtp_buffer_allocate_data@Base 0.10.0 + gst_rtp_buffer_calc_header_len@Base 0.10.0 + gst_rtp_buffer_calc_packet_len@Base 0.10.0 + gst_rtp_buffer_calc_payload_len@Base 0.10.0 + gst_rtp_buffer_compare_seqnum@Base 0.10.15 + gst_rtp_buffer_default_clock_rate@Base 0.10.13 + gst_rtp_buffer_ext_timestamp@Base 0.10.15 + gst_rtp_buffer_get_csrc@Base 0.10.0 + gst_rtp_buffer_get_csrc_count@Base 0.10.0 + gst_rtp_buffer_get_extension@Base 0.10.0 + gst_rtp_buffer_get_extension_data@Base 0.10.15 + gst_rtp_buffer_get_header_len@Base 0.10.15 + gst_rtp_buffer_get_marker@Base 0.10.0 + gst_rtp_buffer_get_packet_len@Base 0.10.0 + gst_rtp_buffer_get_padding@Base 0.10.0 + gst_rtp_buffer_get_payload@Base 0.10.0 + gst_rtp_buffer_get_payload_buffer@Base 0.10.0 + gst_rtp_buffer_get_payload_len@Base 0.10.0 + gst_rtp_buffer_get_payload_subbuffer@Base 0.10.10 + gst_rtp_buffer_get_payload_type@Base 0.10.0 + gst_rtp_buffer_get_seq@Base 0.10.0 + gst_rtp_buffer_get_ssrc@Base 0.10.0 + gst_rtp_buffer_get_timestamp@Base 0.10.0 + gst_rtp_buffer_get_version@Base 0.10.0 + gst_rtp_buffer_list_get_payload_len@Base 0.10.24 + gst_rtp_buffer_list_get_payload_type@Base 0.10.24 + gst_rtp_buffer_list_get_seq@Base 0.10.24 + gst_rtp_buffer_list_get_ssrc@Base 0.10.24 + gst_rtp_buffer_list_get_timestamp@Base 0.10.24 + gst_rtp_buffer_list_set_payload_type@Base 0.10.24 + gst_rtp_buffer_list_set_seq@Base 0.10.24 + gst_rtp_buffer_list_set_ssrc@Base 0.10.24 + gst_rtp_buffer_list_set_timestamp@Base 0.10.24 + gst_rtp_buffer_list_validate@Base 0.10.24 + gst_rtp_buffer_new_allocate@Base 0.10.0 + gst_rtp_buffer_new_allocate_len@Base 0.10.0 + gst_rtp_buffer_new_copy_data@Base 0.10.0 + gst_rtp_buffer_new_take_data@Base 0.10.0 + gst_rtp_buffer_pad_to@Base 0.10.0 + gst_rtp_buffer_set_csrc@Base 0.10.0 + gst_rtp_buffer_set_extension@Base 0.10.0 + gst_rtp_buffer_set_extension_data@Base 0.10.18 + gst_rtp_buffer_set_marker@Base 0.10.0 + gst_rtp_buffer_set_packet_len@Base 0.10.0 + gst_rtp_buffer_set_padding@Base 0.10.0 + gst_rtp_buffer_set_payload_type@Base 0.10.0 + gst_rtp_buffer_set_seq@Base 0.10.0 + gst_rtp_buffer_set_ssrc@Base 0.10.0 + gst_rtp_buffer_set_timestamp@Base 0.10.0 + gst_rtp_buffer_set_version@Base 0.10.0 + gst_rtp_buffer_validate@Base 0.10.0 + gst_rtp_buffer_validate_data@Base 0.10.0 + gst_rtp_payload_info_for_name@Base 0.10.15 + gst_rtp_payload_info_for_pt@Base 0.10.15 +libgstrtsp-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_rtsp_auth_method_get_type@Base 0.10.14 + gst_rtsp_base64_decode_ip@Base 0.10.14 + gst_rtsp_base64_encode@Base 0.10.14 + gst_rtsp_connection_accept@Base 0.10.23 + gst_rtsp_connection_clear_auth_params@Base 0.10.20 + gst_rtsp_connection_close@Base 0.10.14 + gst_rtsp_connection_connect@Base 0.10.14 + gst_rtsp_connection_create@Base 0.10.14 + gst_rtsp_connection_create_from_fd@Base 0.10.25 + gst_rtsp_connection_do_tunnel@Base 0.10.23 + gst_rtsp_connection_flush@Base 0.10.14 + gst_rtsp_connection_free@Base 0.10.14 + gst_rtsp_connection_get_ip@Base 0.10.20 + gst_rtsp_connection_get_readfd@Base 0.10.23 + gst_rtsp_connection_get_tunnelid@Base 0.10.23 + gst_rtsp_connection_get_url@Base 0.10.23 + gst_rtsp_connection_get_writefd@Base 0.10.23 + gst_rtsp_connection_is_tunneled@Base 0.10.23 + gst_rtsp_connection_next_timeout@Base 0.10.14 + gst_rtsp_connection_poll@Base 0.10.15 + gst_rtsp_connection_read@Base 0.10.14 + gst_rtsp_connection_receive@Base 0.10.14 + gst_rtsp_connection_reset_timeout@Base 0.10.14 + gst_rtsp_connection_send@Base 0.10.14 + gst_rtsp_connection_set_auth@Base 0.10.14 + gst_rtsp_connection_set_auth_param@Base 0.10.20 + gst_rtsp_connection_set_http_mode@Base 0.10.25 + gst_rtsp_connection_set_ip@Base 0.10.23 + gst_rtsp_connection_set_proxy@Base 0.10.23 + gst_rtsp_connection_set_qos_dscp@Base 0.10.20 + gst_rtsp_connection_set_tunneled@Base 0.10.23 + gst_rtsp_connection_write@Base 0.10.14 + gst_rtsp_event_get_type@Base 0.10.15 + gst_rtsp_extension_after_send@Base 0.10.14 + gst_rtsp_extension_before_send@Base 0.10.14 + gst_rtsp_extension_configure_stream@Base 0.10.14 + gst_rtsp_extension_detect_server@Base 0.10.14 + gst_rtsp_extension_get_transports@Base 0.10.14 + gst_rtsp_extension_get_type@Base 0.10.14 + gst_rtsp_extension_parse_sdp@Base 0.10.14 + gst_rtsp_extension_receive_request@Base 0.10.23 + gst_rtsp_extension_send@Base 0.10.14 + gst_rtsp_extension_setup_media@Base 0.10.14 + gst_rtsp_extension_stream_select@Base 0.10.14 + gst_rtsp_family_get_type@Base 0.10.14 + gst_rtsp_find_header_field@Base 0.10.14 + gst_rtsp_find_method@Base 0.10.14 + gst_rtsp_header_allow_multiple@Base 0.10.25 + gst_rtsp_header_as_text@Base 0.10.14 + gst_rtsp_header_field_get_type@Base 0.10.14 + gst_rtsp_marshal_ENUM__POINTER_POINTER@Base 0.10.14 + gst_rtsp_message_add_header@Base 0.10.14 + gst_rtsp_message_append_headers@Base 0.10.14 + gst_rtsp_message_dump@Base 0.10.14 + gst_rtsp_message_free@Base 0.10.14 + gst_rtsp_message_get_body@Base 0.10.14 + gst_rtsp_message_get_header@Base 0.10.14 + gst_rtsp_message_get_type@Base 0.10.14 + gst_rtsp_message_init@Base 0.10.14 + gst_rtsp_message_init_data@Base 0.10.14 + gst_rtsp_message_init_request@Base 0.10.14 + gst_rtsp_message_init_response@Base 0.10.14 + gst_rtsp_message_new@Base 0.10.14 + gst_rtsp_message_new_data@Base 0.10.14 + gst_rtsp_message_new_request@Base 0.10.14 + gst_rtsp_message_new_response@Base 0.10.14 + gst_rtsp_message_parse_data@Base 0.10.14 + gst_rtsp_message_parse_request@Base 0.10.14 + gst_rtsp_message_parse_response@Base 0.10.14 + gst_rtsp_message_remove_header@Base 0.10.14 + gst_rtsp_message_set_body@Base 0.10.14 + gst_rtsp_message_steal_body@Base 0.10.14 + gst_rtsp_message_take_body@Base 0.10.14 + gst_rtsp_message_take_header@Base 0.10.23 + gst_rtsp_message_unset@Base 0.10.14 + gst_rtsp_method_as_text@Base 0.10.14 + gst_rtsp_method_get_type@Base 0.10.14 + gst_rtsp_options_as_text@Base 0.10.23 + gst_rtsp_range_free@Base 0.10.14 + gst_rtsp_range_parse@Base 0.10.14 + gst_rtsp_range_to_string@Base 0.10.23 + gst_rtsp_result_get_type@Base 0.10.14 + gst_rtsp_state_get_type@Base 0.10.14 + gst_rtsp_status_as_text@Base 0.10.14 + gst_rtsp_status_code_get_type@Base 0.10.14 + gst_rtsp_strresult@Base 0.10.14 + gst_rtsp_transport_as_text@Base 0.10.14 + gst_rtsp_transport_free@Base 0.10.14 + gst_rtsp_transport_get_manager@Base 0.10.14 + gst_rtsp_transport_get_mime@Base 0.10.14 + gst_rtsp_transport_init@Base 0.10.14 + gst_rtsp_transport_new@Base 0.10.14 + gst_rtsp_transport_parse@Base 0.10.14 + gst_rtsp_url_copy@Base 0.10.22 + gst_rtsp_url_free@Base 0.10.14 + gst_rtsp_url_get_port@Base 0.10.14 + gst_rtsp_url_get_request_uri@Base 0.10.14 + gst_rtsp_url_get_type@Base 0.10.22 + gst_rtsp_url_parse@Base 0.10.14 + gst_rtsp_url_set_port@Base 0.10.14 + gst_rtsp_version_as_text@Base 0.10.14 + gst_rtsp_version_get_type@Base 0.10.14 + gst_rtsp_watch_attach@Base 0.10.23 + gst_rtsp_watch_new@Base 0.10.23 + gst_rtsp_watch_queue_data@Base 0.10.24 + gst_rtsp_watch_queue_message@Base 0.10.23 + gst_rtsp_watch_reset@Base 0.10.23 + gst_rtsp_watch_send_message@Base 0.10.25 + gst_rtsp_watch_unref@Base 0.10.23 + gst_rtsp_watch_write_data@Base 0.10.25 +libgstsdp-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_sdp_media_add_attribute@Base 0.10.14 + gst_sdp_media_add_bandwidth@Base 0.10.14 + gst_sdp_media_add_connection@Base 0.10.14 + gst_sdp_media_add_format@Base 0.10.14 + gst_sdp_media_as_text@Base 0.10.15 + gst_sdp_media_attributes_len@Base 0.10.14 + gst_sdp_media_bandwidths_len@Base 0.10.14 + gst_sdp_media_connections_len@Base 0.10.14 + gst_sdp_media_formats_len@Base 0.10.14 + gst_sdp_media_free@Base 0.10.14 + gst_sdp_media_get_attribute@Base 0.10.14 + gst_sdp_media_get_attribute_val@Base 0.10.14 + gst_sdp_media_get_attribute_val_n@Base 0.10.14 + gst_sdp_media_get_bandwidth@Base 0.10.15 + gst_sdp_media_get_connection@Base 0.10.14 + gst_sdp_media_get_format@Base 0.10.14 + gst_sdp_media_get_information@Base 0.10.14 + gst_sdp_media_get_key@Base 0.10.14 + gst_sdp_media_get_media@Base 0.10.14 + gst_sdp_media_get_num_ports@Base 0.10.14 + gst_sdp_media_get_port@Base 0.10.14 + gst_sdp_media_get_proto@Base 0.10.14 + gst_sdp_media_init@Base 0.10.14 + gst_sdp_media_new@Base 0.10.14 + gst_sdp_media_set_information@Base 0.10.14 + gst_sdp_media_set_key@Base 0.10.14 + gst_sdp_media_set_media@Base 0.10.14 + gst_sdp_media_set_port_info@Base 0.10.14 + gst_sdp_media_set_proto@Base 0.10.14 + gst_sdp_media_uninit@Base 0.10.14 + gst_sdp_message_add_attribute@Base 0.10.14 + gst_sdp_message_add_bandwidth@Base 0.10.14 + gst_sdp_message_add_email@Base 0.10.14 + gst_sdp_message_add_media@Base 0.10.14 + gst_sdp_message_add_phone@Base 0.10.14 + gst_sdp_message_add_time@Base 0.10.14 + gst_sdp_message_add_zone@Base 0.10.14 + gst_sdp_message_as_text@Base 0.10.15 + gst_sdp_message_attributes_len@Base 0.10.14 + gst_sdp_message_bandwidths_len@Base 0.10.14 + gst_sdp_message_dump@Base 0.10.14 + gst_sdp_message_emails_len@Base 0.10.14 + gst_sdp_message_free@Base 0.10.14 + gst_sdp_message_get_attribute@Base 0.10.14 + gst_sdp_message_get_attribute_val@Base 0.10.14 + gst_sdp_message_get_attribute_val_n@Base 0.10.14 + gst_sdp_message_get_bandwidth@Base 0.10.14 + gst_sdp_message_get_connection@Base 0.10.14 + gst_sdp_message_get_email@Base 0.10.14 + gst_sdp_message_get_information@Base 0.10.14 + gst_sdp_message_get_key@Base 0.10.14 + gst_sdp_message_get_media@Base 0.10.14 + gst_sdp_message_get_origin@Base 0.10.14 + gst_sdp_message_get_phone@Base 0.10.14 + gst_sdp_message_get_session_name@Base 0.10.14 + gst_sdp_message_get_time@Base 0.10.14 + gst_sdp_message_get_uri@Base 0.10.14 + gst_sdp_message_get_version@Base 0.10.14 + gst_sdp_message_get_zone@Base 0.10.14 + gst_sdp_message_init@Base 0.10.14 + gst_sdp_message_medias_len@Base 0.10.14 + gst_sdp_message_new@Base 0.10.14 + gst_sdp_message_parse_buffer@Base 0.10.14 + gst_sdp_message_phones_len@Base 0.10.14 + gst_sdp_message_set_connection@Base 0.10.14 + gst_sdp_message_set_information@Base 0.10.14 + gst_sdp_message_set_key@Base 0.10.14 + gst_sdp_message_set_origin@Base 0.10.14 + gst_sdp_message_set_session_name@Base 0.10.14 + gst_sdp_message_set_uri@Base 0.10.14 + gst_sdp_message_set_version@Base 0.10.14 + gst_sdp_message_times_len@Base 0.10.14 + gst_sdp_message_uninit@Base 0.10.14 + gst_sdp_message_zones_len@Base 0.10.14 +libgsttag-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_tag_demux_get_type@Base 0.10.15 + gst_tag_demux_result_get_type@Base 0.10.22 + gst_tag_freeform_string_to_utf8@Base 0.10.13 + gst_tag_from_id3_tag@Base 0.10.0 + gst_tag_from_id3_user_tag@Base 0.10.5 + gst_tag_from_vorbis_tag@Base 0.10.0 + gst_tag_id3_genre_count@Base 0.10.0 + gst_tag_id3_genre_get@Base 0.10.0 + gst_tag_image_data_to_image_buffer@Base 0.10.20 + gst_tag_image_type_get_type@Base 0.10.9 + gst_tag_list_add_id3_image@Base 0.10.20 + gst_tag_list_from_vorbiscomment_buffer@Base 0.10.0 + gst_tag_list_new_from_id3v1@Base 0.10.0 + gst_tag_list_to_vorbiscomment_buffer@Base 0.10.0 + gst_tag_parse_extended_comment@Base 0.10.10 + gst_tag_register_musicbrainz_tags@Base 0.10.3 + gst_tag_to_id3_tag@Base 0.10.0 + gst_tag_to_vorbis_comments@Base 0.10.0 + gst_tag_to_vorbis_tag@Base 0.10.0 + gst_vorbis_tag_add@Base 0.10.0 +libgstvideo-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# +* Build-Depends-Package: libgstreamer-plugins-base0.10-dev + gst_video_calculate_display_ratio@Base 0.10.7 + gst_video_filter_get_type@Base 0.10.0 + gst_video_format_convert@Base 0.10.16 + gst_video_format_from_fourcc@Base 0.10.16 + gst_video_format_get_component_height@Base 0.10.16 + gst_video_format_get_component_offset@Base 0.10.16 + gst_video_format_get_component_width@Base 0.10.16 + gst_video_format_get_pixel_stride@Base 0.10.16 + gst_video_format_get_row_stride@Base 0.10.16 + gst_video_format_get_size@Base 0.10.16 + gst_video_format_get_type@Base 0.10.22 + gst_video_format_has_alpha@Base 0.10.16 + gst_video_format_is_rgb@Base 0.10.16 + gst_video_format_is_yuv@Base 0.10.16 + gst_video_format_new_caps@Base 0.10.16 + gst_video_format_new_caps_interlaced@Base 0.10.23 + gst_video_format_parse_caps@Base 0.10.16 + gst_video_format_parse_caps_interlaced@Base 0.10.23 + gst_video_format_to_fourcc@Base 0.10.16 + gst_video_frame_rate@Base 0.10.0 + gst_video_get_size@Base 0.10.0 + gst_video_parse_caps_framerate@Base 0.10.16 + gst_video_parse_caps_pixel_aspect_ratio@Base 0.10.16 + gst_video_sink_center_rect@Base 0.10.0 + gst_video_sink_get_type@Base 0.10.0 --- gst-plugins-base0.10-0.10.25.orig/debian/gstreamer-plugins-base-apps.install +++ gst-plugins-base0.10-0.10.25/debian/gstreamer-plugins-base-apps.install @@ -0,0 +1 @@ +debian/tmp/usr/bin/gst-visualise-@GST_ABI@ --- gst-plugins-base0.10-0.10.25.orig/debian/build-deps +++ gst-plugins-base0.10-0.10.25/debian/build-deps @@ -0,0 +1,31 @@ +@GST_LIB_DEV_DEP@ +@GST_EXTRA_BUILD_DEPENDS@ +autotools-dev +cdbs (>= 0.4.20) +debhelper (>= 5) +gnome-pkg-tools (>= 0.7) +pkg-config (>= 0.11.0) +libxv-dev (>= 6.8.2.dfsg.1-3) +libxt-dev (>= 6.8.2.dfsg.1-3) +libvorbis-dev (>= 1.0.0-2) +libcdparanoia-dev (>= 3.10.2) +libgnomevfs2-dev (>= 1:2.20.0-2) +liboil0.3-dev (>= 0.3.14) +libpango1.0-dev (>= 1.15.4) +libtheora-dev (>= 0.0.0.alpha5) +libglib2.0-dev (>= 2.16.0) +libxml2-dev (>= 2.4.23) +zlib1g-dev (>= 1:1.1.4) +gtk-doc-tools +type-handling (>= 0.2.14) +libvisual-0.4-dev (>= 0.4.0) +gstreamer-tools (>= 0.10.14) +dpkg-dev (>= 1.14.13) +lsb-release +libgtk2.0-dev (>= 2.12.0) +libglib2.0-doc +gstreamer0.10-doc +libgirepository1.0-dev (>= 0.6.3) +gobject-introspection (>= 0.6.3) +gobject-introspection-glib-2.0 (>= 0.6.3) +gobject-introspection-freedesktop (>= 0.6.3) --- gst-plugins-base0.10-0.10.25.orig/debian/HACKING.Debian +++ gst-plugins-base0.10-0.10.25/debian/HACKING.Debian @@ -0,0 +1,91 @@ +Hacking GStreamer for Debian +============================ + +An addition to the README.Debian that has Debian package hacking notes. + +Everything should now be versioned. + +- To update dependencies edit debian/build-deps.in + +- To rebuild package files from .in files: + + debian/rules maint + +- After a version update to check for missing files run: + + debian/maint missing + debian/maint missing-libs + debian/maint missing-so + +- To update package files edit gstreamer-foo then rebuild package files. This + will generate the gstreamerX.Y-foo file. Also update debian/rules and + debian/control.in as needed. + +- The packaging tries to stay close of upstream choice. gstreamerX.Y-misc has + most of the files, extra packages are made for the sinks and by group of + depends (gnome, x, ...) + +- Provide gstreamerX.Y-videosink and gstreamerX.Y-audiosink as needed. + +- All interfaces and generic libraries go in libgstreamer-plugins, libraries + with external dependencies have their own package such as libgstreamer-gconf. + +- Applications go in gstreamerX.Y-plugins-base-apps + + +File listing +------------ + +build-deps: + - generated from "build-deps.in" in "rules + debian/build-deps:": + * "build-deps.in" lists build-depends for Debian main packages + - serves generation with "control.in" and "mk.control" of "control" in + "rules debian/control::" +build-deps.in: + - lists build-depends for Debian main packages + - serves generation with "extra deps" of "build-deps" in "rules + debian/build-deps:" +changelog: handled classically +compat: handled classically +control: + - generated for "rules maint" + - generated from "control.in" and "build-deps" in "rules debian/control::": + * "build-deps" lists build-depends to be inserted in "control + Build-Depends:" + * "control.in" serves of template for package descriptions of Debian main + packages and makes use of special stanzas enclosed in "@" such as + "@GST_ABI" which are replaced via sed in "rules debian/control::" +control.in: + - serves generation of "control" in "rules debian/control::" via "mk.control" + called in "rules debian/control::" + - template for package descriptions of Debian main packages and makes use of + special stanzas enclosed in "@" such as "@GST_ABI" which are replaced via + sed in "rules debian/control::" +copyright: handled classically +gstreamer-$plugin.install: + - serves the generation of $gst_pkgname-$plugin.install (for example + gstreamer-alsa.install serves the generation of gstreamerX.Y-alsa.install) in + "rules pre-build::" via dynamic "@"-enclosed variables replacement + - some plugins are handled specially and some special variables are available +gstreamer-plugins-base-apps.install: this isn't really a plugin, but the + gstreamerX.Y-plugins-base-apps package +gstreamer-plugins-base-apps.manpages: man pages for the gstreamerX.Y-plugins-base-apps + package +HACKING.Debian: this file +libgstreamer-plugins-base-dev.install libgstreamer-plugins-base.install: handled similarly has gstreamerX.Y-plugins-base-apps +maint: makefile wrapping some targets of "rules" with some sh filtering +mk.control: + - Perl script serving the generation of "control" which reads "build-deps" + and "control.in", and replaces the "BUILDDEPS" stanza with the build-deps +patches: handled classically +README.Debian: handled classically +rules: handled classically, with special targets "maint:", and + "debian/build-deps:" +watch: handled classically + +This file is the initial work of: +David I. Lehn Tue, 13 Apr 2004 21:28:55 -0400 +and had some additions by: +Loic Minier Sun, 19 Jun 2005 19:04:58 +0200 +Sebastien Bacher Wed, 14 Dec 2005 17:00:21 +0100 --- gst-plugins-base0.10-0.10.25.orig/debian/control.in +++ gst-plugins-base0.10-0.10.25/debian/control.in @@ -0,0 +1,214 @@ +Source: gst-plugins-base@GST_ABI@ +Section: libs +Priority: optional +Maintainer: Maintainers of GStreamer packages +Uploaders: David I. Lehn , + Loic Minier , + Sebastien Bacher , + Sebastian Dröge , + Sjoerd Simons +Build-Depends: BUILDDEPS +Standards-Version: 3.8.3 +Homepage: http://gstreamer.freedesktop.org + +Package: @GST_PKGNAME@-plugins-base-apps +Architecture: any +Section: utils +Depends: ${misc:Depends}, + ${perl:Depends}, + @GST_PKGNAME@-tools +Description: GStreamer helper programs from the "base" set + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains helper programs from the "base" set, an essential + exemplary set of elements. + +Package: @GST_PKGNAME@-plugins-base-doc +Architecture: all +Section: doc +Depends: ${misc:Depends}, + libglib2.0-doc, + gstreamer0.10-doc +Description: GStreamer documentation for plugins from the "base" set + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This packages contains documentation for plugins from the "base" set, + an essential exemplary set of elements. + +Package: @GST_PLUGINS_BASE_LIB@ +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends} +Conflicts: totem-gstreamer (<= 2.17.92-0ubuntu1), + gstreamer0.10-pulseaudio (<< 0.10.16-1ubuntu3) +Suggests: libvisual-0.4-plugins, + gstreamer-codec-install | gnome-codec-install +Replaces: gobject-introspection-repository (<< 0.6.5-2) +Description: GStreamer libraries from the "base" set + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains libraries from the "base" set, an essential + exemplary set of elements. + +Package: @GST_PLUGINS_BASE_LIB_DEV@ +Architecture: any +Section: libdevel +Depends: ${misc:Depends}, + ${shlibs:Depends}, + @GST_PLUGINS_BASE_LIB@ (= ${binary:Version}), + libc6-dev | libc-dev, + pkg-config, + @GST_LIB_DEV_DEP@, + libglib2.0-dev, + libxml2-dev +Replaces: gobject-introspection-repository (<< 0.6.5-2) +Description: GStreamer development files for libraries from the "base" set + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains development files for GStreamer libraries from + the "base" set, an essential exemplary set of elements. + +Package: @GST_PKGNAME@-alsa +Architecture: @linux@ +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends}, + @GST_PLUGINS_BASE_LIB@ (>= @GST_VERSION@) +XB-GStreamer-Version: ${gstreamer:Version} +XB-GStreamer-Elements: ${gstreamer:Elements} +XB-GStreamer-URI-Sources: ${gstreamer:URISources} +XB-GStreamer-URI-Sinks: ${gstreamer:URISinks} +XB-GStreamer-Encoders: ${gstreamer:Encoders} +XB-GStreamer-Decoders: ${gstreamer:Decoders} +Provides: ${gstreamer:Provides} +Description: GStreamer plugin for ALSA + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains the GStreamer plugin for the ALSA library. ALSA + is the Advanced Linux Sound Architecture. + +Package: @GST_PKGNAME@-gnomevfs +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends} +Recommends: libgnomevfs2-extra +XB-GStreamer-Version: ${gstreamer:Version} +XB-GStreamer-Elements: ${gstreamer:Elements} +XB-GStreamer-URI-Sources: ${gstreamer:URISources} +XB-GStreamer-URI-Sinks: ${gstreamer:URISinks} +XB-GStreamer-Encoders: ${gstreamer:Encoders} +XB-GStreamer-Decoders: ${gstreamer:Decoders} +Provides: ${gstreamer:Provides} +Description: GStreamer plugin for GnomeVFS + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains the GStreamer plugin to read from and write to + GnomeVFS URIs. GnomeVFS is the GNOME virtual file-system. + +Package: @GST_PKGNAME@-plugins-base +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends}, + @GST_PLUGINS_BASE_LIB@ (>= @GST_VERSION@) +Recommends: gvfs +Replaces: gstreamer0.10-plugins-bad (<< 0.10.3+cvs20060814-0ubuntu4) +XB-GStreamer-Version: ${gstreamer:Version} +XB-GStreamer-Elements: ${gstreamer:Elements} +XB-GStreamer-URI-Sources: ${gstreamer:URISources} +XB-GStreamer-URI-Sinks: ${gstreamer:URISinks} +XB-GStreamer-Encoders: ${gstreamer:Encoders} +XB-GStreamer-Decoders: ${gstreamer:Decoders} +Provides: ${gstreamer:Provides} +Description: GStreamer plugins from the "base" set + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains the GStreamer plugins from the "base" set, an + essential exemplary set of elements. + +Package: @GST_PKGNAME@-plugins-base-dbg +Architecture: any +Section: debug +Priority: extra +Depends: @GST_PKGNAME@-alsa (= ${binary:Version}) [@linux@], + @GST_PKGNAME@-plugins-base (= ${binary:Version}), + @GST_PKGNAME@-x (= ${binary:Version}), + @GST_PLUGINS_BASE_LIB@ (= ${binary:Version}), + ${misc:Depends} +Suggests: @GST_PKGNAME@-gnomevfs (= ${binary:Version}) +Replaces: gstreamer0.10-plugins-bad-dbg (<< 0.10.3+cvs20060814-0ubuntu4) +Description: GStreamer plugins from the "base" set + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains unstripped shared libraries. It is provided primarily + to provide a backtrace with names in a debugger, this makes it somewhat + easier to interpret core dumps. The libraries are installed in + /usr/lib/debug and are automatically used by gdb. + +Package: @GST_PKGNAME@-x +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends}, + @GST_PLUGINS_BASE_LIB@ (>= @GST_VERSION@) +XB-GStreamer-Version: ${gstreamer:Version} +XB-GStreamer-Elements: ${gstreamer:Elements} +XB-GStreamer-URI-Sources: ${gstreamer:URISources} +XB-GStreamer-URI-Sinks: ${gstreamer:URISinks} +XB-GStreamer-Encoders: ${gstreamer:Encoders} +XB-GStreamer-Decoders: ${gstreamer:Decoders} +Provides: ${gstreamer:Provides} +Description: GStreamer plugins for X11 and Pango + GStreamer is a streaming media framework, based on graphs of filters + which operate on media data. Applications using this library can do + anything from real-time sound processing to playing videos, and just + about anything else media-related. Its plugin-based architecture means + that new data types or processing capabilities can be added simply by + installing new plug-ins. + . + This package contains the GStreamer plugins for X11 video output, both + for standard Xlib support and for the Xv extension, as well as the + plugin for Pango-based text rendering and overlay. + --- gst-plugins-base0.10-0.10.25.orig/debian/patches/99_ltmain_as-needed.patch +++ gst-plugins-base0.10-0.10.25/debian/patches/99_ltmain_as-needed.patch @@ -0,0 +1,30 @@ +--- ltmain.sh.old 2007-10-09 07:38:25.000000000 +0200 ++++ ltmain.sh 2007-10-09 07:39:25.000000000 +0200 +@@ -1794,6 +1794,11 @@ + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + ++ -Wl,--as-needed) ++ deplibs="$deplibs $arg" ++ continue ++ ;; ++ + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= +@@ -2137,6 +2142,15 @@ + lib= + found=no + case $deplib in ++ -Wl,--as-needed) ++ if test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ deplibs="$deplib $deplibs" ++ fi ++ continue ++ ;; + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" --- gst-plugins-base0.10-0.10.25.orig/debian/patches/0006-decodebin2-Use-the-iterate-internal-links-function-i.patch +++ gst-plugins-base0.10-0.10.25/debian/patches/0006-decodebin2-Use-the-iterate-internal-links-function-i.patch @@ -0,0 +1,71 @@ +From 4a7f2e6c102eeefa7da8e7c9c2eec3c0019bba01 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Sat, 26 Sep 2009 12:47:53 +0200 +Subject: [PATCH 6/7] decodebin2: Use the iterate internal links function instead of string magic to get multiqueue srcpads + +--- + gst/playback/gstdecodebin2.c | 31 +++++++++++++++++-------------- + 1 files changed, 17 insertions(+), 14 deletions(-) + +diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c +index 1d6c9d2..4fe62b4 100644 +--- a/gst/playback/gstdecodebin2.c ++++ b/gst/playback/gstdecodebin2.c +@@ -2108,7 +2108,7 @@ gst_decode_group_control_demuxer_pad (GstDecodeGroup * group, GstPad * pad) + { + GstDecodeBin *dbin; + GstPad *srcpad, *sinkpad; +- gchar *nb, *sinkname, *srcname; ++ GstIterator *it = NULL; + + dbin = group->dbin; + +@@ -2126,29 +2126,32 @@ gst_decode_group_control_demuxer_pad (GstDecodeGroup * group, GstPad * pad) + + if ((gst_pad_link (pad, sinkpad) != GST_PAD_LINK_OK)) { + GST_ERROR_OBJECT (dbin, "Couldn't link demuxer and multiqueue"); +- goto beach; ++ goto error; + } + +- CHAIN_MUTEX_LOCK (group->parent); +- group->reqpads = g_list_prepend (group->reqpads, gst_object_ref (sinkpad)); +- +- sinkname = gst_pad_get_name (sinkpad); +- nb = sinkname + 4; +- srcname = g_strdup_printf ("src%s", nb); +- g_free (sinkname); ++ it = gst_pad_iterate_internal_links (sinkpad); + +- if (!(srcpad = gst_element_get_static_pad (group->multiqueue, srcname))) { +- GST_ERROR_OBJECT (dbin, "Couldn't get srcpad %s from multiqueue", srcname); +- goto chiringuito; ++ if (!it || (gst_iterator_next (it, (gpointer *) & srcpad)) != GST_ITERATOR_OK ++ || srcpad == NULL) { ++ GST_ERROR_OBJECT (dbin, ++ "Couldn't get srcpad from multiqueue for sinkpad %" GST_PTR_FORMAT, ++ sinkpad); ++ goto error; + } + +-chiringuito: +- g_free (srcname); ++ CHAIN_MUTEX_LOCK (group->parent); ++ group->reqpads = g_list_prepend (group->reqpads, gst_object_ref (sinkpad)); + CHAIN_MUTEX_UNLOCK (group->parent); + + beach: ++ if (it) ++ gst_iterator_free (it); + gst_object_unref (sinkpad); + return srcpad; ++ ++error: ++ gst_element_release_request_pad (group->multiqueue, sinkpad); ++ goto beach; + } + + /* gst_decode_group_is_complete: +-- +1.6.4.3 + --- gst-plugins-base0.10-0.10.25.orig/debian/patches/0005-uridecodebin-Don-t-post-missing-plugin-messages-twic.patch +++ gst-plugins-base0.10-0.10.25/debian/patches/0005-uridecodebin-Don-t-post-missing-plugin-messages-twic.patch @@ -0,0 +1,40 @@ +From 5ee4ee1682cff7ca44897fec0dcee6374cd6636d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Thu, 24 Sep 2009 14:56:48 +0200 +Subject: [PATCH 5/7] uridecodebin: Don't post missing plugin messages twice + +decodebin2 already posts them after emitting the unknown-type signal, +there's no need to post another one. +--- + gst/playback/gsturidecodebin.c | 6 ------ + 1 files changed, 0 insertions(+), 6 deletions(-) + +diff --git a/gst/playback/gsturidecodebin.c b/gst/playback/gsturidecodebin.c +index 0e0bb74..6420414 100644 +--- a/gst/playback/gsturidecodebin.c ++++ b/gst/playback/gsturidecodebin.c +@@ -33,8 +33,6 @@ + #include + #include + +-#include +- + #include "gstfactorylists.h" + #include "gstplay-marshal.h" + #include "gstplay-enum.h" +@@ -622,12 +620,8 @@ static void + unknown_type_cb (GstElement * element, GstPad * pad, GstCaps * caps, + GstURIDecodeBin * decoder) + { +- GstMessage *msg; + gchar *capsstr; + +- msg = gst_missing_decoder_message_new (GST_ELEMENT_CAST (decoder), caps); +- gst_element_post_message (GST_ELEMENT_CAST (decoder), msg); +- + capsstr = gst_caps_to_string (caps); + GST_ELEMENT_WARNING (decoder, CORE, MISSING_PLUGIN, + (_("No decoder available for type \'%s\'."), capsstr), (NULL)); +-- +1.6.4.3 + --- gst-plugins-base0.10-0.10.25.orig/debian/patches/0001-decodebin2-Only-use-the-object-lock-for-protecting-t.patch +++ gst-plugins-base0.10-0.10.25/debian/patches/0001-decodebin2-Only-use-the-object-lock-for-protecting-t.patch @@ -0,0 +1,65 @@ +From 881e4aa606ac184e4da485a88066ff30e88fc5cd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Sat, 26 Sep 2009 12:04:55 +0200 +Subject: [PATCH 1/7] decodebin2: Only use the object lock for protecting the subtitle elements + +Using the decodebin lock will result in deadlocks if the subtitle encoding +is accessed from a pad-added handler. +--- + gst/playback/gstdecodebin2.c | 12 +++++------- + 1 files changed, 5 insertions(+), 7 deletions(-) + +diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c +index 3b60ae9..1ad7968 100644 +--- a/gst/playback/gstdecodebin2.c ++++ b/gst/playback/gstdecodebin2.c +@@ -857,18 +857,16 @@ gst_decode_bin_set_subs_encoding (GstDecodeBin * dbin, const gchar * encoding) + + GST_DEBUG_OBJECT (dbin, "Setting new encoding: %s", GST_STR_NULL (encoding)); + +- DECODE_BIN_LOCK (dbin); + GST_OBJECT_LOCK (dbin); + g_free (dbin->encoding); + dbin->encoding = g_strdup (encoding); +- GST_OBJECT_UNLOCK (dbin); + + /* set the subtitle encoding on all added elements */ + for (walk = dbin->subtitles; walk; walk = g_list_next (walk)) { + g_object_set (G_OBJECT (walk->data), "subtitle-encoding", dbin->encoding, + NULL); + } +- DECODE_BIN_UNLOCK (dbin); ++ GST_OBJECT_UNLOCK (dbin); + } + + static gchar * +@@ -1319,11 +1317,11 @@ connect_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad, + continue; + } + if (subtitle) { +- DECODE_BIN_LOCK (dbin); ++ GST_OBJECT_LOCK (dbin); + /* we added the element now, add it to the list of subtitle-encoding + * elements when we can set the property */ + dbin->subtitles = g_list_prepend (dbin->subtitles, element); +- DECODE_BIN_UNLOCK (dbin); ++ GST_OBJECT_UNLOCK (dbin); + } + + res = TRUE; +@@ -2364,10 +2362,10 @@ restart: + + done: + gst_element_set_state (element, GST_STATE_NULL); +- DECODE_BIN_LOCK (dbin); ++ GST_OBJECT_LOCK (dbin); + /* remove possible subtitle element */ + dbin->subtitles = g_list_remove (dbin->subtitles, element); +- DECODE_BIN_UNLOCK (dbin); ++ GST_OBJECT_UNLOCK (dbin); + gst_bin_remove (GST_BIN (dbin), element); + + beach: +-- +1.6.4.3 + --- gst-plugins-base0.10-0.10.25.orig/debian/patches/01_baseaudiosink-remove-pulsesink-hack.patch +++ gst-plugins-base0.10-0.10.25/debian/patches/01_baseaudiosink-remove-pulsesink-hack.patch @@ -0,0 +1,34 @@ +--- gst-libs/gst/audio/gstbaseaudiosink.c.old 2009-10-21 19:58:04.000000000 +0200 ++++ gst-libs/gst/audio/gstbaseaudiosink.c 2009-10-21 19:58:26.000000000 +0200 +@@ -240,8 +240,6 @@ + gst_base_audio_sink_init (GstBaseAudioSink * baseaudiosink, + GstBaseAudioSinkClass * g_class) + { +- GstPluginFeature *feature; +- + baseaudiosink->priv = GST_BASE_AUDIO_SINK_GET_PRIVATE (baseaudiosink); + + baseaudiosink->buffer_time = DEFAULT_BUFFER_TIME; +@@ -260,22 +258,6 @@ + GST_DEBUG_FUNCPTR (gst_base_audio_sink_query_pad)); + + baseaudiosink->priv->do_time_offset = TRUE; +- +- /* check the factory, pulsesink < 0.10.17 does the timestamp offset itself so +- * we should not do ourselves */ +- feature = +- GST_PLUGIN_FEATURE_CAST (GST_ELEMENT_CLASS (g_class)->elementfactory); +- GST_DEBUG ("created from factory %p", feature); +- +- /* HACK for old pulsesink that did the time_offset themselves */ +- if (feature) { +- if (strcmp (gst_plugin_feature_get_name (feature), "pulsesink") == 0) { +- if (!gst_plugin_feature_check_version (feature, 0, 10, 17)) { +- /* we're dealing with an old pulsesink, we need to disable time corection */ +- baseaudiosink->priv->do_time_offset = FALSE; +- } +- } +- } + } + + static void --- gst-plugins-base0.10-0.10.25.orig/debian/patches/0004-decodebin2-Rewrite-autoplugging-and-how-groups-of-pa.patch +++ gst-plugins-base0.10-0.10.25/debian/patches/0004-decodebin2-Rewrite-autoplugging-and-how-groups-of-pa.patch @@ -0,0 +1,2494 @@ +From 39bc12ee20437b352a13361ba48dcc886fce35a2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Sat, 26 Sep 2009 12:17:49 +0200 +Subject: [PATCH 4/7] decodebin2: Rewrite autoplugging and how groups of pads are exposed + +This now keeps track of everything that is going on, creates +a tree of chains and groups to allow "demuxer after demuxer" scenarios +and allows chained Oggs with multiple streams (needs oggdemux or playbin2 fixes). + +Also document everything in detail and give a general overview of what +decodebin2 is doing at the top of the sources. + +Fixes bug #596183, #563828 and #591677. +--- + gst/playback/gstdecodebin2.c | 1782 ++++++++++++++++++++++-------------------- + 1 files changed, 946 insertions(+), 836 deletions(-) + +diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c +index 24e251b..1d6c9d2 100644 +--- a/gst/playback/gstdecodebin2.c ++++ b/gst/playback/gstdecodebin2.c +@@ -1,5 +1,6 @@ + /* GStreamer + * Copyright (C) <2006> Edward Hervey ++ * Copyright (C) <2009> Sebastian Dröge + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public +@@ -31,6 +32,51 @@ + * decodebin2 instead of the older #GstDecodeBin for its internal auto-plugging. + */ + ++/* Implementation notes: ++ * ++ * The following section describes how decodebin2 works internally. ++ * ++ * The first part of decodebin2 is it's typefind element, which tries ++ * to get the type of the input stream. If the type is found autoplugging starts. ++ * ++ * decodebin2 internally organizes the elements it autoplugged into GstDecodeChains ++ * and GstDecodeGroups. A decode chain is a single chain of decoding, this ++ * means that if decodebin2 every autoplugs an element with two+ srcpads ++ * (e.g. a demuxer) this will end the chain and everything following this ++ * demuxer will be put into decode groups below the chain. Otherwise, ++ * if an element has a single srcpad that outputs raw data the decode chain ++ * is ended too and a GstDecodePad is stored and blocked. ++ * ++ * A decode group combines a number of chains that are created by a ++ * demuxer element. All those chains are connected through a multiqueue to ++ * the demuxer. A new group for the same demuxer is only created if the ++ * demuxer has signaled no-more pads, in which case all following pads ++ * create a new chain in the new group. ++ * ++ * This continues until the top-level decode chain is complete. A decode ++ * chain is complete if it either ends with a blocked endpad, if autoplugging ++ * stopped because no suitable plugins could be found or if the active group ++ * is complete. A decode group OTOH is complete if all child chains are complete. ++ * ++ * If this happens at some point, all endpads of all active groups are exposed. ++ * For this decodebin2 adds the endpads, signals no-more-pads and then unblocks ++ * them. Now playback starts. ++ * ++ * If one of the chains that end on a endpad receives EOS decodebin2 checks upwards ++ * via the parent pointers if all chains and groups are drained. In that case ++ * everything goes into EOS. ++ * If there is a chain where the active group is drained but there exist next groups ++ * the active group is hidden (endpads are removed) and the next group is exposed. ++ * ++ * Note 1: If we're talking about blocked endpads this really means that the ++ * *target* pads of the endpads are blocked. Pads that are exposed to the outside ++ * should never ever be blocked! ++ * ++ * Note 2: If a group is complete and the parent's chain demuxer adds new pads ++ * but never signaled no-more-pads this additional pads will be ignored! ++ * ++ */ ++ + #ifdef HAVE_CONFIG_H + #include "config.h" + #endif +@@ -61,6 +107,7 @@ GST_STATIC_PAD_TEMPLATE ("src%d", + GST_DEBUG_CATEGORY_STATIC (gst_decode_bin_debug); + #define GST_CAT_DEFAULT gst_decode_bin_debug + ++typedef struct _GstDecodeChain GstDecodeChain; + typedef struct _GstDecodeGroup GstDecodeGroup; + typedef struct _GstDecodePad GstDecodePad; + typedef GstGhostPadClass GstDecodePadClass; +@@ -90,16 +137,14 @@ struct _GstDecodeBin + + GstElement *typefind; /* this holds the typefind object */ + +- GMutex *lock; /* Protects activegroup and groups */ +- GstDecodeGroup *activegroup; /* group currently active */ +- GList *groups; /* List of non-active GstDecodeGroups, sorted in +- * order of creation. */ +- GList *oldgroups; /* List of no-longer-used GstDecodeGroups. +- * Should be freed in dispose */ ++ GMutex *expose_lock; /* Protects exposal and removal of groups */ ++ GstDecodeChain *decode_chain; /* Top level decode chain */ + gint nbpads; /* unique identifier for source pads */ + + GValueArray *factories; /* factories we can use for selecting elements */ +- GList *subtitles; /* List of elements with subtitle-encoding */ ++ ++ GList *subtitles; /* List of elements with subtitle-encoding, ++ * protected by object lock! */ + + gboolean have_type; /* if we received the have_type signal */ + guint have_type_id; /* signal id for have-type from typefind */ +@@ -170,8 +215,8 @@ static const GstElementDetails gst_decode_bin_details = + GST_ELEMENT_DETAILS ("Decoder Bin", + "Generic/Bin/Decoder", + "Autoplug and decode to raw media", +- "Edward Hervey "); +- ++ "Edward Hervey , " ++ "Sebastian Dröge "); + + static void do_async_start (GstDecodeBin * dbin); + static void do_async_done (GstDecodeBin * dbin); +@@ -194,33 +239,31 @@ static void gst_decode_bin_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); + static void gst_decode_bin_set_caps (GstDecodeBin * dbin, GstCaps * caps); + static GstCaps *gst_decode_bin_get_caps (GstDecodeBin * dbin); +-static void caps_notify_group_cb (GstPad * pad, GParamSpec * unused, +- GstDecodeGroup * group); + static void caps_notify_cb (GstPad * pad, GParamSpec * unused, +- GstDecodeBin * dbin); ++ GstDecodeChain * chain); + + static GstPad *find_sink_pad (GstElement * element); + static GstStateChangeReturn gst_decode_bin_change_state (GstElement * element, + GstStateChange transition); + +-#define DECODE_BIN_LOCK(dbin) G_STMT_START { \ ++#define EXPOSE_LOCK(dbin) G_STMT_START { \ + GST_LOG_OBJECT (dbin, \ +- "locking from thread %p", \ ++ "expose locking from thread %p", \ + g_thread_self ()); \ +- g_mutex_lock (GST_DECODE_BIN_CAST(dbin)->lock); \ ++ g_mutex_lock (GST_DECODE_BIN_CAST(dbin)->expose_lock); \ + GST_LOG_OBJECT (dbin, \ +- "locked from thread %p", \ ++ "expose locked from thread %p", \ + g_thread_self ()); \ + } G_STMT_END + +-#define DECODE_BIN_UNLOCK(dbin) G_STMT_START { \ ++#define EXPOSE_UNLOCK(dbin) G_STMT_START { \ + GST_LOG_OBJECT (dbin, \ +- "unlocking from thread %p", \ ++ "expose unlocking from thread %p", \ + g_thread_self ()); \ +- g_mutex_unlock (GST_DECODE_BIN_CAST(dbin)->lock); \ ++ g_mutex_unlock (GST_DECODE_BIN_CAST(dbin)->expose_lock); \ + } G_STMT_END + +-#define DECODE_BIN_DYN_LOCK(dbin) G_STMT_START { \ ++#define DYN_LOCK(dbin) G_STMT_START { \ + GST_LOG_OBJECT (dbin, \ + "dynlocking from thread %p", \ + g_thread_self ()); \ +@@ -230,7 +273,7 @@ static GstStateChangeReturn gst_decode_bin_change_state (GstElement * element, + g_thread_self ()); \ + } G_STMT_END + +-#define DECODE_BIN_DYN_UNLOCK(dbin) G_STMT_START { \ ++#define DYN_UNLOCK(dbin) G_STMT_START { \ + GST_LOG_OBJECT (dbin, \ + "dynunlocking from thread %p", \ + g_thread_self ()); \ +@@ -241,68 +284,109 @@ static GstStateChangeReturn gst_decode_bin_change_state (GstElement * element, + * + * Streams belonging to the same group/chain of a media file + * ++ * When changing something here lock the parent chain! + */ + struct _GstDecodeGroup + { + GstDecodeBin *dbin; +- GMutex *lock; +- GstElement *multiqueue; +- +- gboolean exposed; /* TRUE if this group is exposed */ +- gboolean drained; /* TRUE if EOS went through all endpads */ +- gboolean blocked; /* TRUE if all endpads are blocked */ +- gboolean complete; /* TRUE if we are not expecting anymore streams +- * on this group */ ++ GstDecodeChain *parent; ++ ++ GstElement *multiqueue; /* Used for linking all child chains */ + gulong overrunsig; /* the overrun signal for multiqueue */ +- guint nbdynamic; /* number of dynamic pads in the group. */ + +- GList *endpads; /* List of GstDecodePad of source pads to be exposed */ +- GList *reqpads; /* List of RequestPads for multiqueue. */ ++ gboolean overrun; /* TRUE if the multiqueue signaled overrun. This ++ * means that we should really expose the group */ ++ ++ gboolean no_more_pads; /* TRUE if the demuxer signaled no-more-pads */ ++ gboolean drained; /* TRUE if the all children are drained */ ++ ++ GList *children; /* List of GstDecodeChains in this group */ ++ ++ GList *reqpads; /* List of RequestPads for multiqueue, there is ++ * exactly one RequestPad per child chain */ + }; + +-#define GROUP_MUTEX_LOCK(group) G_STMT_START { \ +- GST_LOG_OBJECT (group->dbin, \ +- "locking group %p from thread %p", \ +- group, g_thread_self ()); \ +- g_mutex_lock (group->lock); \ +- GST_LOG_OBJECT (group->dbin, \ +- "locked group %p from thread %p", \ +- group, g_thread_self ()); \ +-} G_STMT_END ++struct _GstDecodeChain ++{ ++ GstDecodeGroup *parent; ++ GstDecodeBin *dbin; + +-#define GROUP_MUTEX_UNLOCK(group) G_STMT_START { \ +- GST_LOG_OBJECT (group->dbin, \ +- "unlocking group %p from thread %p", \ +- group, g_thread_self ()); \ +- g_mutex_unlock (group->lock); \ +-} G_STMT_END ++ GMutex *lock; /* Protects this chain and its groups */ + ++ gboolean demuxer; /* TRUE if elements->data is a demuxer */ ++ GList *elements; /* All elements in this group, first ++ is the latest and most downstream element */ + +-static GstDecodeGroup *gst_decode_group_new (GstDecodeBin * decode_bin, +- gboolean use_queue); +-static GstPad *gst_decode_group_control_demuxer_pad (GstDecodeGroup * group, +- GstPad * pad); +-static gboolean gst_decode_group_control_source_pad (GstDecodeGroup * group, +- GstDecodePad * pad); +-static gboolean gst_decode_group_expose (GstDecodeGroup * group); +-static gboolean gst_decode_group_check_if_blocked (GstDecodeGroup * group); +-static void gst_decode_group_set_complete (GstDecodeGroup * group); ++ /* Note: there are only groups if the last element of this chain ++ * is a demuxer, otherwise the chain will end with an endpad. ++ * The other way around this means, that endpad only exists if this ++ * chain doesn't end with a demuxer! */ ++ ++ GstDecodeGroup *active_group; /* Currently active group */ ++ GList *next_groups; /* head is newest group, tail is next group. ++ a new group will be created only if the head ++ group had no-more-pads. If it's only exposed ++ all new pads will be ignored! */ ++ GList *pending_pads; /* Pads that have no fixed caps yet */ ++ ++ GstDecodePad *endpad; /* Pad of this chain that could be exposed */ ++ gboolean deadend; /* This chain is incomplete and can't be completed, ++ e.g. no suitable decoder could be found ++ */ ++ ++ /* FIXME: This should be done directly via a thread! */ ++ GList *old_groups; /* Groups that should be freed later */ ++}; ++ ++static void gst_decode_chain_free (GstDecodeChain * chain); ++static GstDecodeChain *gst_decode_chain_new (GstDecodeBin * dbin, ++ GstDecodeGroup * group); + static void gst_decode_group_hide (GstDecodeGroup * group); + static void gst_decode_group_free (GstDecodeGroup * group); ++static GstDecodeGroup *gst_decode_group_new (GstDecodeBin * dbin, ++ GstDecodeChain * chain); ++static gboolean gst_decode_chain_is_complete (GstDecodeChain * chain); ++static void gst_decode_chain_handle_eos (GstDecodeChain * chain); ++static gboolean gst_decode_chain_expose (GstDecodeChain * chain, ++ GList ** endpads); ++static gboolean gst_decode_chain_is_drained (GstDecodeChain * chain); ++static gboolean gst_decode_group_is_complete (GstDecodeGroup * group); ++static GstPad *gst_decode_group_control_demuxer_pad (GstDecodeGroup * group, ++ GstPad * pad); ++static gboolean gst_decode_group_is_drained (GstDecodeGroup * group); ++ ++static gboolean gst_decode_bin_expose (GstDecodeBin * dbin); ++ ++#define CHAIN_MUTEX_LOCK(chain) G_STMT_START { \ ++ GST_LOG_OBJECT (chain->dbin, \ ++ "locking chain %p from thread %p", \ ++ chain, g_thread_self ()); \ ++ g_mutex_lock (chain->lock); \ ++ GST_LOG_OBJECT (chain->dbin, \ ++ "locked chain %p from thread %p", \ ++ chain, g_thread_self ()); \ ++} G_STMT_END ++ ++#define CHAIN_MUTEX_UNLOCK(chain) G_STMT_START { \ ++ GST_LOG_OBJECT (chain->dbin, \ ++ "unlocking chain %p from thread %p", \ ++ chain, g_thread_self ()); \ ++ g_mutex_unlock (chain->lock); \ ++} G_STMT_END + + /* GstDecodePad + * +- * GstPad private used for source pads of groups ++ * GstPad private used for source pads of chains + */ + struct _GstDecodePad + { + GstGhostPad parent; + GstDecodeBin *dbin; +- GstDecodeGroup *group; ++ GstDecodeChain *chain; + +- gboolean blocked; /* the pad is blocked */ ++ gboolean blocked; /* the *target* pad is blocked */ ++ gboolean exposed; /* the pad is exposed */ + gboolean drained; /* an EOS has been seen on the pad */ +- gboolean added; /* the pad is added to decodebin */ + }; + + G_DEFINE_TYPE (GstDecodePad, gst_decode_pad, GST_TYPE_GHOST_PAD); +@@ -310,10 +394,11 @@ G_DEFINE_TYPE (GstDecodePad, gst_decode_pad, GST_TYPE_GHOST_PAD); + #define GST_DECODE_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DECODE_PAD,GstDecodePad)) + + static GstDecodePad *gst_decode_pad_new (GstDecodeBin * dbin, GstPad * pad, +- GstDecodeGroup * group); ++ GstDecodeChain * chain); + static void gst_decode_pad_activate (GstDecodePad * dpad, +- GstDecodeGroup * group); ++ GstDecodeChain * chain); + static void gst_decode_pad_unblock (GstDecodePad * dpad); ++static void gst_decode_pad_set_blocked (GstDecodePad * dpad, gboolean blocked); + + /******************************** + * Standard GObject boilerplate * +@@ -643,9 +728,8 @@ gst_decode_bin_init (GstDecodeBin * decode_bin) + G_CALLBACK (type_found), decode_bin); + } + +- decode_bin->lock = g_mutex_new (); +- decode_bin->activegroup = NULL; +- decode_bin->groups = NULL; ++ decode_bin->expose_lock = g_mutex_new (); ++ decode_bin->decode_chain = NULL; + + decode_bin->dyn_lock = g_mutex_new (); + decode_bin->shutdown = FALSE; +@@ -658,82 +742,6 @@ gst_decode_bin_init (GstDecodeBin * decode_bin) + } + + static void +-gst_decode_bin_remove_groups (GstDecodeBin * dbin) +-{ +- GList *tmp; +- GstIterator *it; +- gpointer point; +- gboolean done; +- GstIteratorResult res; +- +- GST_DEBUG_OBJECT (dbin, "cleaning up"); +- +- if (dbin->activegroup) { +- GST_DEBUG_OBJECT (dbin, "free active group %p", dbin->activegroup); +- gst_decode_group_free (dbin->activegroup); +- dbin->activegroup = NULL; +- } +- +- /* remove groups */ +- for (tmp = dbin->groups; tmp; tmp = g_list_next (tmp)) { +- GstDecodeGroup *group = (GstDecodeGroup *) tmp->data; +- +- GST_DEBUG_OBJECT (dbin, "free group %p", group); +- gst_decode_group_free (group); +- } +- g_list_free (dbin->groups); +- dbin->groups = NULL; +- +- for (tmp = dbin->oldgroups; tmp; tmp = g_list_next (tmp)) { +- GstDecodeGroup *group = (GstDecodeGroup *) tmp->data; +- +- GST_DEBUG_OBJECT (dbin, "free old group %p", group); +- gst_decode_group_free (group); +- } +- g_list_free (dbin->oldgroups); +- dbin->oldgroups = NULL; +- +- GST_DEBUG_OBJECT (dbin, "removing last elements"); +- +- /* remove all remaining elements */ +- it = gst_bin_iterate_elements (GST_BIN_CAST (dbin)); +-restart: +- done = FALSE; +- while (!done) { +- res = gst_iterator_next (it, &point); +- switch (res) { +- case GST_ITERATOR_DONE: +- done = TRUE; +- break; +- case GST_ITERATOR_RESYNC: +- gst_iterator_resync (it); +- goto restart; +- case GST_ITERATOR_ERROR: +- GST_WARNING_OBJECT (dbin, +- "Had an error while iterating bin %s", GST_ELEMENT_NAME (dbin)); +- done = TRUE; +- break; +- case GST_ITERATOR_OK: +- { +- GstElement *elem = GST_ELEMENT_CAST (point); +- +- /* don't remove the typefind element */ +- if (elem != dbin->typefind) { +- GST_DEBUG_OBJECT (dbin, "remove element %s", GST_ELEMENT_NAME (elem)); +- gst_bin_remove (GST_BIN_CAST (dbin), elem); +- gst_element_set_state (elem, GST_STATE_NULL); +- } +- gst_object_unref (elem); +- break; +- } +- default: +- break; +- } +- } +- gst_iterator_free (it); +-} +- +-static void + gst_decode_bin_dispose (GObject * object) + { + GstDecodeBin *decode_bin; +@@ -744,7 +752,9 @@ gst_decode_bin_dispose (GObject * object) + g_value_array_free (decode_bin->factories); + decode_bin->factories = NULL; + +- gst_decode_bin_remove_groups (decode_bin); ++ if (decode_bin->decode_chain) ++ gst_decode_chain_free (decode_bin->decode_chain); ++ decode_bin->decode_chain = NULL; + + if (decode_bin->caps) + gst_caps_unref (decode_bin->caps); +@@ -766,9 +776,9 @@ gst_decode_bin_finalize (GObject * object) + + decode_bin = GST_DECODE_BIN (object); + +- if (decode_bin->lock) { +- g_mutex_free (decode_bin->lock); +- decode_bin->lock = NULL; ++ if (decode_bin->expose_lock) { ++ g_mutex_free (decode_bin->expose_lock); ++ decode_bin->expose_lock = NULL; + } + + if (decode_bin->dyn_lock) { +@@ -790,21 +800,10 @@ gst_decode_bin_finalize (GObject * object) + static void + gst_decode_bin_set_caps (GstDecodeBin * dbin, GstCaps * caps) + { +- GstCaps *old; +- + GST_DEBUG_OBJECT (dbin, "Setting new caps: %" GST_PTR_FORMAT, caps); + + GST_OBJECT_LOCK (dbin); +- old = dbin->caps; +- if (old != caps) { +- if (caps) +- gst_caps_ref (caps); +- +- dbin->caps = caps; +- +- if (old) +- gst_caps_unref (old); +- } ++ gst_caps_replace (&dbin->caps, caps); + GST_OBJECT_UNLOCK (dbin); + } + +@@ -994,26 +993,20 @@ static gboolean is_demuxer_element (GstElement * srcelement); + + static gboolean connect_pad (GstDecodeBin * dbin, GstElement * src, + GstDecodePad * dpad, GstPad * pad, GstCaps * caps, GValueArray * factories, +- GstDecodeGroup * group); ++ GstDecodeChain * chain); + static gboolean connect_element (GstDecodeBin * dbin, GstElement * element, +- GstDecodeGroup * group); ++ GstDecodeChain * chain); + static void expose_pad (GstDecodeBin * dbin, GstElement * src, +- GstDecodePad * dpad, GstPad * pad, GstDecodeGroup * group); ++ GstDecodePad * dpad, GstPad * pad, GstDecodeChain * chain); + +-static void pad_added_group_cb (GstElement * element, GstPad * pad, +- GstDecodeGroup * group); +-static void pad_removed_group_cb (GstElement * element, GstPad * pad, +- GstDecodeGroup * group); +-static void no_more_pads_group_cb (GstElement * element, +- GstDecodeGroup * group); + static void pad_added_cb (GstElement * element, GstPad * pad, +- GstDecodeBin * dbin); ++ GstDecodeChain * chain); + static void pad_removed_cb (GstElement * element, GstPad * pad, +- GstDecodeBin * dbin); +-static void no_more_pads_cb (GstElement * element, GstDecodeBin * dbin); ++ GstDecodeChain * chain); ++static void no_more_pads_cb (GstElement * element, GstDecodeChain * chain); + +-static GstDecodeGroup *get_current_group (GstDecodeBin * dbin, +- gboolean create, gboolean demux, gboolean * created); ++static GstDecodeGroup *gst_decode_chain_get_current_group (GstDecodeChain * ++ chain); + + /* called when a new pad is discovered. It will perform some basic actions + * before trying to link something to it. +@@ -1029,7 +1022,7 @@ static GstDecodeGroup *get_current_group (GstDecodeBin * dbin, + */ + static void + analyze_new_pad (GstDecodeBin * dbin, GstElement * src, GstPad * pad, +- GstCaps * caps, GstDecodeGroup * group) ++ GstCaps * caps, GstDecodeChain * chain) + { + gboolean apcontinue = TRUE; + GValueArray *factories = NULL, *result = NULL; +@@ -1038,13 +1031,40 @@ analyze_new_pad (GstDecodeBin * dbin, GstElement * src, GstPad * pad, + GST_DEBUG_OBJECT (dbin, "Pad %s:%s caps:%" GST_PTR_FORMAT, + GST_DEBUG_PAD_NAME (pad), caps); + ++ if (chain->elements && src != chain->elements->data) { ++ GST_ERROR_OBJECT (dbin, "New pad from not the last element in this chain"); ++ return; ++ } ++ ++ if (chain->endpad) { ++ GST_ERROR_OBJECT (dbin, "New pad in a chain that is already complete"); ++ return; ++ } ++ ++ if (chain->demuxer) { ++ GstDecodeGroup *group; ++ GstDecodeChain *oldchain = chain; ++ ++ CHAIN_MUTEX_LOCK (oldchain); ++ group = gst_decode_chain_get_current_group (chain); ++ if (group) { ++ chain = gst_decode_chain_new (dbin, group); ++ group->children = g_list_prepend (group->children, chain); ++ } ++ CHAIN_MUTEX_UNLOCK (oldchain); ++ if (!group) { ++ GST_WARNING_OBJECT (dbin, "No current group"); ++ return; ++ } ++ } ++ + if ((caps == NULL) || gst_caps_is_empty (caps)) + goto unknown_type; + + if (gst_caps_is_any (caps)) + goto any_caps; + +- dpad = gst_decode_pad_new (dbin, pad, group); ++ dpad = gst_decode_pad_new (dbin, pad, chain); + + /* 1. Emit 'autoplug-continue' the result will tell us if this pads needs + * further autoplugging. */ +@@ -1088,7 +1108,7 @@ analyze_new_pad (GstDecodeBin * dbin, GstElement * src, GstPad * pad, + + /* 1.e else continue autoplugging something from the list. */ + GST_LOG_OBJECT (pad, "Let's continue discovery on this pad"); +- connect_pad (dbin, src, dpad, pad, caps, factories, group); ++ connect_pad (dbin, src, dpad, pad, caps, factories, chain); + + gst_object_unref (dpad); + g_value_array_free (factories); +@@ -1098,7 +1118,7 @@ analyze_new_pad (GstDecodeBin * dbin, GstElement * src, GstPad * pad, + expose_pad: + { + GST_LOG_OBJECT (dbin, "Pad is final. autoplug-continue:%d", apcontinue); +- expose_pad (dbin, src, dpad, pad, group); ++ expose_pad (dbin, src, dpad, pad, chain); + gst_object_unref (dpad); + return; + } +@@ -1108,14 +1128,19 @@ unknown_type: + g_signal_emit (G_OBJECT (dbin), + gst_decode_bin_signals[SIGNAL_UNKNOWN_TYPE], 0, pad, caps); + +- /* Check if there are no pending groups, if so, commit our state */ +- if (dbin->groups == NULL) { +- do_async_done (dbin); +- } ++ chain->deadend = TRUE; + + gst_element_post_message (GST_ELEMENT_CAST (dbin), + gst_missing_decoder_message_new (GST_ELEMENT_CAST (dbin), caps)); + ++ /* Try to expose anything */ ++ EXPOSE_LOCK (dbin); ++ if (gst_decode_chain_is_complete (dbin->decode_chain)) { ++ gst_decode_bin_expose (dbin); ++ } ++ EXPOSE_UNLOCK (dbin); ++ do_async_done (dbin); ++ + if (src == dbin->typefind) { + gchar *desc; + +@@ -1150,17 +1175,14 @@ any_caps: + setup_caps_delay: + { + /* connect to caps notification */ +- if (group) { +- GROUP_MUTEX_LOCK (group); +- group->nbdynamic++; +- GST_LOG_OBJECT (dbin, "Group %p has now %d dynamic elements", group, +- group->nbdynamic); +- GROUP_MUTEX_UNLOCK (group); +- g_signal_connect (G_OBJECT (pad), "notify::caps", +- G_CALLBACK (caps_notify_group_cb), group); +- } else +- g_signal_connect (G_OBJECT (pad), "notify::caps", +- G_CALLBACK (caps_notify_cb), dbin); ++ CHAIN_MUTEX_LOCK (chain); ++ GST_LOG_OBJECT (dbin, "Chain %p has now %d dynamic pads", chain, ++ g_list_length (chain->pending_pads)); ++ chain->pending_pads = ++ g_list_prepend (chain->pending_pads, gst_object_ref (pad)); ++ CHAIN_MUTEX_UNLOCK (chain); ++ g_signal_connect (G_OBJECT (pad), "notify::caps", ++ G_CALLBACK (caps_notify_cb), chain); + return; + } + } +@@ -1179,28 +1201,28 @@ setup_caps_delay: + static gboolean + connect_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad, + GstPad * pad, GstCaps * caps, GValueArray * factories, +- GstDecodeGroup * group) ++ GstDecodeChain * chain) + { + gboolean res = FALSE; + GstPad *mqpad = NULL; ++ gboolean is_demuxer = chain->parent && !chain->elements; /* First pad after the demuxer */ + + g_return_val_if_fail (factories != NULL, FALSE); + g_return_val_if_fail (factories->n_values > 0, FALSE); + +- GST_DEBUG_OBJECT (dbin, "pad %s:%s , group:%p", +- GST_DEBUG_PAD_NAME (pad), group); ++ GST_DEBUG_OBJECT (dbin, "pad %s:%s , chain:%p", ++ GST_DEBUG_PAD_NAME (pad), chain); + + /* 1. is element demuxer or parser */ +- if (is_demuxer_element (src)) { +- GST_LOG_OBJECT (src, "is a demuxer, connecting the pad through multiqueue"); +- +- if (!group) +- group = get_current_group (dbin, TRUE, TRUE, NULL); ++ if (is_demuxer) { ++ GST_LOG_OBJECT (src, ++ "is a demuxer, connecting the pad through multiqueue '%s'", ++ GST_OBJECT_NAME (chain->parent->multiqueue)); + + gst_ghost_pad_set_target (GST_GHOST_PAD (dpad), NULL); +- if (!(mqpad = gst_decode_group_control_demuxer_pad (group, pad))) ++ if (!(mqpad = gst_decode_group_control_demuxer_pad (chain->parent, pad))) + goto beach; +- src = group->multiqueue; ++ src = chain->parent->multiqueue; + pad = mqpad; + gst_ghost_pad_set_target (GST_GHOST_PAD (dpad), pad); + } +@@ -1213,6 +1235,11 @@ connect_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad, + GstPad *sinkpad; + gboolean subtitle; + ++ /* Set dpad target to pad again, it might've been unset ++ * below but we came back here because something failed ++ */ ++ gst_ghost_pad_set_target (GST_GHOST_PAD (dpad), pad); ++ + /* take first factory */ + factory = g_value_get_object (g_value_array_get_nth (factories, 0)); + /* Remove selected factory from the list. */ +@@ -1230,7 +1257,7 @@ connect_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad, + case GST_AUTOPLUG_SELECT_EXPOSE: + GST_DEBUG_OBJECT (dbin, "autoplug select requested expose"); + /* expose the pad, we don't have the source element */ +- expose_pad (dbin, src, dpad, pad, group); ++ expose_pad (dbin, src, dpad, pad, chain); + res = TRUE; + goto beach; + case GST_AUTOPLUG_SELECT_SKIP: +@@ -1293,8 +1320,14 @@ connect_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad, + gst_object_unref (sinkpad); + GST_LOG_OBJECT (dbin, "linked on pad %s:%s", GST_DEBUG_PAD_NAME (pad)); + ++ CHAIN_MUTEX_LOCK (chain); ++ chain->elements = ++ g_list_prepend (chain->elements, gst_object_ref (element)); ++ chain->demuxer = is_demuxer_element (element); ++ CHAIN_MUTEX_UNLOCK (chain); ++ + /* link this element further */ +- connect_element (dbin, element, group); ++ connect_element (dbin, element, chain); + + /* try to configure the subtitle encoding property when we can */ + if (g_object_class_find_property (G_OBJECT_GET_CLASS (element), +@@ -1310,10 +1343,22 @@ connect_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad, + /* Bring the element to the state of the parent */ + if ((gst_element_set_state (element, + GST_STATE_PAUSED)) == GST_STATE_CHANGE_FAILURE) { ++ GstElement *tmp = NULL; ++ + GST_WARNING_OBJECT (dbin, "Couldn't set %s to PAUSED", + GST_ELEMENT_NAME (element)); +- gst_element_set_state (element, GST_STATE_NULL); +- gst_bin_remove (GST_BIN (dbin), element); ++ ++ /* Remove all elements in this chain that were just added. No ++ * other thread could've added elements in the meantime */ ++ CHAIN_MUTEX_LOCK (chain); ++ do { ++ tmp = chain->elements->data; ++ gst_element_set_state (tmp, GST_STATE_NULL); ++ gst_bin_remove (GST_BIN (dbin), tmp); ++ chain->elements = g_list_delete_link (chain->elements, chain->elements); ++ } while (tmp != element); ++ CHAIN_MUTEX_UNLOCK (chain); ++ + continue; + } + if (subtitle) { +@@ -1337,15 +1382,15 @@ beach: + + static gboolean + connect_element (GstDecodeBin * dbin, GstElement * element, +- GstDecodeGroup * group) ++ GstDecodeChain * chain) + { + GList *pads; + gboolean res = TRUE; + gboolean dynamic = FALSE; + GList *to_connect = NULL; + +- GST_DEBUG_OBJECT (dbin, "Attempting to connect element %s [group:%p] further", +- GST_ELEMENT_NAME (element), group); ++ GST_DEBUG_OBJECT (dbin, "Attempting to connect element %s [chain:%p] further", ++ GST_ELEMENT_NAME (element), chain); + + /* 1. Loop over pad templates, grabbing existing pads along the way */ + for (pads = GST_ELEMENT_GET_CLASS (element)->padtemplates; pads; +@@ -1406,31 +1451,16 @@ connect_element (GstDecodeBin * dbin, GstElement * element, + } + } + +- /* 2. if there are more potential pads, connect to relevent signals */ ++ /* 2. if there are more potential pads, connect to relevant signals */ + if (dynamic) { +- if (group) { +- GST_LOG_OBJECT (dbin, "Adding signals to element %s in group %p", +- GST_ELEMENT_NAME (element), group); +- GROUP_MUTEX_LOCK (group); +- group->nbdynamic++; +- GST_LOG_OBJECT (dbin, "Group %p has now %d dynamic elements", group, +- group->nbdynamic); +- GROUP_MUTEX_UNLOCK (group); +- g_signal_connect (G_OBJECT (element), "pad-added", +- G_CALLBACK (pad_added_group_cb), group); +- g_signal_connect (G_OBJECT (element), "pad-removed", +- G_CALLBACK (pad_removed_group_cb), group); +- g_signal_connect (G_OBJECT (element), "no-more-pads", +- G_CALLBACK (no_more_pads_group_cb), group); +- } else { +- /* This is a non-grouped element, the handlers are different */ +- g_signal_connect (G_OBJECT (element), "pad-added", +- G_CALLBACK (pad_added_cb), dbin); +- g_signal_connect (G_OBJECT (element), "pad-removed", +- G_CALLBACK (pad_removed_cb), dbin); +- g_signal_connect (G_OBJECT (element), "no-more-pads", +- G_CALLBACK (no_more_pads_cb), dbin); +- } ++ GST_LOG_OBJECT (dbin, "Adding signals to element %s in chain %p", ++ GST_ELEMENT_NAME (element), chain); ++ g_signal_connect (G_OBJECT (element), "pad-added", ++ G_CALLBACK (pad_added_cb), chain); ++ g_signal_connect (G_OBJECT (element), "pad-removed", ++ G_CALLBACK (pad_removed_cb), chain); ++ g_signal_connect (G_OBJECT (element), "no-more-pads", ++ G_CALLBACK (no_more_pads_cb), chain); + } + + /* 3. for every available pad, connect it */ +@@ -1439,7 +1469,7 @@ connect_element (GstDecodeBin * dbin, GstElement * element, + GstCaps *caps; + + caps = gst_pad_get_caps (pad); +- analyze_new_pad (dbin, element, pad, caps, group); ++ analyze_new_pad (dbin, element, pad, caps, chain); + if (caps) + gst_caps_unref (caps); + +@@ -1452,43 +1482,42 @@ connect_element (GstDecodeBin * dbin, GstElement * element, + + /* expose_pad: + * +- * Expose the given pad on the group as a decoded pad. +- * If group is NULL, a GstDecodeGroup will be created and setup properly. ++ * Expose the given pad on the chain as a decoded pad. + */ + static void + expose_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad, +- GstPad * pad, GstDecodeGroup * group) ++ GstPad * pad, GstDecodeChain * chain) + { +- gboolean newgroup = FALSE; +- gboolean isdemux; + GstPad *mqpad = NULL; + +- GST_DEBUG_OBJECT (dbin, "pad %s:%s, group:%p", +- GST_DEBUG_PAD_NAME (pad), group); +- +- isdemux = is_demuxer_element (src); +- +- if (!group) +- group = get_current_group (dbin, TRUE, isdemux, &newgroup); ++ GST_DEBUG_OBJECT (dbin, "pad %s:%s, chain:%p", ++ GST_DEBUG_PAD_NAME (pad), chain); + +- if (isdemux) { ++ /* If this is the first pad for this chain, there are no other elements ++ * and the source element is not the multiqueue we must link through the ++ * multiqueue. ++ * ++ * This is the case if a demuxer directly exposed a raw pad. ++ */ ++ if (chain->parent && !chain->elements && src != chain->parent->multiqueue) { + GST_LOG_OBJECT (src, "connecting the pad through multiqueue"); + + gst_ghost_pad_set_target (GST_GHOST_PAD (dpad), NULL); +- if (!(mqpad = gst_decode_group_control_demuxer_pad (group, pad))) ++ if (!(mqpad = gst_decode_group_control_demuxer_pad (chain->parent, pad))) + goto beach; + pad = mqpad; + gst_ghost_pad_set_target (GST_GHOST_PAD (dpad), pad); + } + +- gst_decode_group_control_source_pad (group, dpad); ++ gst_decode_pad_activate (dpad, chain); ++ chain->endpad = gst_object_ref (dpad); + +- if (newgroup && !isdemux) { +- /* If we have discovered a raw pad and it doesn't belong to any group, +- * that means there wasn't any demuxer. In that case, we consider the +- * group as being complete. */ +- gst_decode_group_set_complete (group); ++ EXPOSE_LOCK (dbin); ++ if (gst_decode_chain_is_complete (dbin->decode_chain)) { ++ gst_decode_bin_expose (dbin); + } ++ EXPOSE_UNLOCK (dbin); ++ + if (mqpad) + gst_object_unref (mqpad); + +@@ -1514,16 +1543,17 @@ type_found (GstElement * typefind, guint probability, + goto exit; + } + +- /* we can only deal with one type, we don't yet support dynamically changing ++ /* FIXME: we can only deal with one type, we don't yet support dynamically changing + * caps from the typefind element */ +- if (decode_bin->have_type) ++ if (decode_bin->have_type || decode_bin->decode_chain) + goto exit; + + decode_bin->have_type = TRUE; + + pad = gst_element_get_static_pad (typefind, "src"); + +- analyze_new_pad (decode_bin, typefind, pad, caps, NULL); ++ decode_bin->decode_chain = gst_decode_chain_new (decode_bin, NULL); ++ analyze_new_pad (decode_bin, typefind, pad, caps, decode_bin->decode_chain); + + gst_object_unref (pad); + +@@ -1532,133 +1562,116 @@ exit: + } + + static void +-pad_added_group_cb (GstElement * element, GstPad * pad, GstDecodeGroup * group) ++pad_added_cb (GstElement * element, GstPad * pad, GstDecodeChain * chain) + { + GstCaps *caps; +- gboolean expose = FALSE; + GstDecodeBin *dbin; + +- dbin = group->dbin; ++ dbin = chain->dbin; + +- GST_DEBUG_OBJECT (pad, "pad added, group:%p", group); ++ GST_DEBUG_OBJECT (pad, "pad added, chain:%p", chain); + + caps = gst_pad_get_caps (pad); +- analyze_new_pad (dbin, element, pad, caps, group); ++ analyze_new_pad (dbin, element, pad, caps, chain); + if (caps) + gst_caps_unref (caps); + +- GROUP_MUTEX_LOCK (group); +- if (group->nbdynamic > 0) +- group->nbdynamic--; +- GST_LOG_OBJECT (dbin, "Group %p has now %d dynamic objects", group, +- group->nbdynamic); +- if (group->nbdynamic == 0) +- expose = TRUE; +- GROUP_MUTEX_UNLOCK (group); +- +- if (expose) { ++ EXPOSE_LOCK (dbin); ++ if (gst_decode_chain_is_complete (dbin->decode_chain)) { + GST_LOG_OBJECT (dbin, + "That was the last dynamic object, now attempting to expose the group"); +- DECODE_BIN_LOCK (dbin); +- if (!gst_decode_group_expose (group)) ++ if (!gst_decode_bin_expose (dbin)) + GST_WARNING_OBJECT (dbin, "Couldn't expose group"); +- DECODE_BIN_UNLOCK (dbin); + } ++ EXPOSE_UNLOCK (dbin); + } + + static void +-pad_removed_group_cb (GstElement * element, GstPad * pad, +- GstDecodeGroup * group) ++pad_removed_cb (GstElement * element, GstPad * pad, GstDecodeChain * chain) + { +- GST_LOG_OBJECT (pad, "pad removed, group:%p", group); ++ GList *l; ++ ++ GST_LOG_OBJECT (pad, "pad removed, chain:%p", chain); + + /* In fact, we don't have to do anything here, the active group will be + * removed when the group's multiqueue is drained */ ++ CHAIN_MUTEX_LOCK (chain); ++ for (l = chain->pending_pads; l; l = l->next) { ++ GstPad *opad = l->data; ++ ++ if (pad == opad) { ++ g_signal_handlers_disconnect_by_func (pad, caps_notify_cb, chain); ++ gst_object_unref (pad); ++ chain->pending_pads = g_list_delete_link (chain->pending_pads, l); ++ break; ++ } ++ } ++ CHAIN_MUTEX_UNLOCK (chain); + } + + static void +-no_more_pads_group_cb (GstElement * element, GstDecodeGroup * group) +-{ +- GST_LOG_OBJECT (element, "no more pads, setting group %p to complete", group); +- +- /* when we received no_more_pads, we can complete the pads of the group */ +- gst_decode_group_set_complete (group); +-} +- +-static void +-pad_added_cb (GstElement * element, GstPad * pad, GstDecodeBin * dbin) +-{ +- GstCaps *caps; +- +- GST_LOG_OBJECT (pad, "Pad added to non-grouped element"); +- +- caps = gst_pad_get_caps (pad); +- analyze_new_pad (dbin, element, pad, caps, NULL); +- if (caps) +- gst_caps_unref (caps); +-} +- +-static void +-pad_removed_cb (GstElement * element, GstPad * pad, GstDecodeBin * dbin) +-{ +- GST_LOG_OBJECT (pad, "Pad removed from non-grouped element"); +-} +- +-static void +-no_more_pads_cb (GstElement * element, GstDecodeBin * dbin) ++no_more_pads_cb (GstElement * element, GstDecodeChain * chain) + { +- GstDecodeGroup *group; +- +- GST_LOG_OBJECT (element, "No more pads, setting current group to complete"); +- +- /* Find the non-complete group, there should only be one */ +- if (!(group = get_current_group (dbin, FALSE, FALSE, NULL))) +- goto no_group; +- +- gst_decode_group_set_complete (group); ++ GstDecodeGroup *group = NULL; + +- return; ++ GST_LOG_OBJECT (element, "got no more pads"); + +-no_group: +- { +- GST_DEBUG_OBJECT (dbin, "We couldn't find a non-completed group"); ++ if (!chain->elements || (GstElement *) chain->elements->data != element) { ++ GST_LOG_OBJECT (chain->dbin, "no-more-pads from old chain element '%s'", ++ GST_OBJECT_NAME (element)); + return; + } +-} + +-static void +-caps_notify_cb (GstPad * pad, GParamSpec * unused, GstDecodeBin * dbin) +-{ +- GstElement *element; +- +- GST_LOG_OBJECT (dbin, "Notified caps for pad %s:%s", +- GST_DEBUG_PAD_NAME (pad)); +- +- /* Disconnect this; if we still need it, we'll reconnect to this in +- * analyze_new_pad */ +- g_signal_handlers_disconnect_by_func (pad, caps_notify_cb, dbin); ++ CHAIN_MUTEX_LOCK (chain); ++ /* when we received no_more_pads, we can complete the pads of the chain */ ++ if (!chain->next_groups && chain->active_group) { ++ group = chain->active_group; ++ } else if (chain->next_groups) { ++ group = chain->next_groups->data; ++ } ++ if (!group) { ++ GST_ERROR_OBJECT (chain->dbin, "can't find group for element"); ++ CHAIN_MUTEX_UNLOCK (chain); ++ return; ++ } + +- element = GST_ELEMENT_CAST (gst_pad_get_parent (pad)); ++ GST_DEBUG_OBJECT (element, "Setting group %p to complete", group); + +- pad_added_cb (element, pad, dbin); ++ group->no_more_pads = TRUE; ++ CHAIN_MUTEX_UNLOCK (chain); + +- gst_object_unref (element); ++ EXPOSE_LOCK (chain->dbin); ++ if (gst_decode_chain_is_complete (chain->dbin->decode_chain)) { ++ gst_decode_bin_expose (chain->dbin); ++ } ++ EXPOSE_UNLOCK (chain->dbin); + } + + static void +-caps_notify_group_cb (GstPad * pad, GParamSpec * unused, GstDecodeGroup * group) ++caps_notify_cb (GstPad * pad, GParamSpec * unused, GstDecodeChain * chain) + { + GstElement *element; ++ GList *l; + + GST_LOG_OBJECT (pad, "Notified caps for pad %s:%s", GST_DEBUG_PAD_NAME (pad)); + + /* Disconnect this; if we still need it, we'll reconnect to this in + * analyze_new_pad */ +- g_signal_handlers_disconnect_by_func (pad, caps_notify_group_cb, group); ++ g_signal_handlers_disconnect_by_func (pad, caps_notify_cb, chain); + + element = GST_ELEMENT_CAST (gst_pad_get_parent (pad)); + +- pad_added_group_cb (element, pad, group); ++ CHAIN_MUTEX_LOCK (chain); ++ for (l = chain->pending_pads; l; l = l->next) { ++ if (l->data == pad) { ++ gst_object_unref (GST_OBJECT_CAST (l->data)); ++ chain->pending_pads = g_list_delete_link (chain->pending_pads, l); ++ break; ++ } ++ } ++ CHAIN_MUTEX_UNLOCK (chain); ++ ++ pad_added_cb (element, pad, chain); + + gst_object_unref (element); + } +@@ -1721,25 +1734,204 @@ is_demuxer_element (GstElement * srcelement) + static gboolean + are_raw_caps (GstDecodeBin * dbin, GstCaps * caps) + { +- GstCaps *intersection; + gboolean res; + + GST_LOG_OBJECT (dbin, "Checking with caps %" GST_PTR_FORMAT, caps); + + /* lock for getting the caps */ + GST_OBJECT_LOCK (dbin); +- intersection = gst_caps_intersect (dbin->caps, caps); ++ res = gst_caps_can_intersect (dbin->caps, caps); + GST_OBJECT_UNLOCK (dbin); + +- res = (!(gst_caps_is_empty (intersection))); +- +- gst_caps_unref (intersection); +- + GST_LOG_OBJECT (dbin, "Caps are %sfinal caps", res ? "" : "not "); + + return res; + } + ++/**** ++ * GstDecodeChain functions ++ ****/ ++ ++/* gst_decode_chain_get_current_group: ++ * ++ * Returns the current group of this chain, to which ++ * new chains should be attached or NULL if the last ++ * group didn't have no-more-pads. ++ * ++ * Not MT-safe: Call with parent chain lock! ++ */ ++static GstDecodeGroup * ++gst_decode_chain_get_current_group (GstDecodeChain * chain) ++{ ++ GstDecodeGroup *group; ++ ++ if (!chain->next_groups && chain->active_group ++ && chain->active_group->overrun && !chain->active_group->no_more_pads) { ++ GST_WARNING_OBJECT (chain->dbin, ++ "Currently active group %p is exposed" ++ " and wants to add a new pad without having signaled no-more-pads", ++ chain->active_group); ++ return NULL; ++ } ++ ++ if (chain->next_groups && (group = chain->next_groups->data) && group->overrun ++ && !group->no_more_pads) { ++ GST_WARNING_OBJECT (chain->dbin, ++ "Currently newest pending group %p " ++ "had overflow but didn't signal no-more-pads", group); ++ return NULL; ++ } ++ ++ /* Now we know that we can really return something useful */ ++ if (!chain->active_group) { ++ chain->active_group = group = gst_decode_group_new (chain->dbin, chain); ++ } else if (!chain->active_group->overrun ++ && !chain->active_group->no_more_pads) { ++ group = chain->active_group; ++ } else if (chain->next_groups && (group = chain->next_groups->data) ++ && !group->overrun && !group->no_more_pads) { ++ /* group = chain->next_groups->data */ ++ } else { ++ group = gst_decode_group_new (chain->dbin, chain); ++ chain->next_groups = g_list_prepend (chain->next_groups, group); ++ } ++ ++ return group; ++} ++ ++static void gst_decode_group_free_internal (GstDecodeGroup * group, ++ gboolean hide); ++ ++static void ++gst_decode_chain_free_internal (GstDecodeChain * chain, gboolean hide) ++{ ++ GList *l; ++ ++ CHAIN_MUTEX_LOCK (chain); ++ ++ GST_DEBUG_OBJECT (chain->dbin, "%s chain %p", (hide ? "Hiding" : "Freeing"), ++ chain); ++ ++ if (chain->active_group) { ++ gst_decode_group_free_internal (chain->active_group, hide); ++ if (!hide) ++ chain->active_group = NULL; ++ } ++ ++ for (l = chain->next_groups; l; l = l->next) { ++ gst_decode_group_free_internal ((GstDecodeGroup *) l->data, hide); ++ if (!hide) ++ l->data = NULL; ++ } ++ if (!hide) { ++ g_list_free (chain->next_groups); ++ chain->next_groups = NULL; ++ } ++ ++ if (!hide) { ++ for (l = chain->old_groups; l; l = l->next) { ++ GstDecodeGroup *group = l->data; ++ ++ gst_decode_group_free (group); ++ } ++ g_list_free (chain->old_groups); ++ chain->old_groups = NULL; ++ } ++ ++ for (l = chain->pending_pads; l; l = l->next) { ++ GstPad *pad = GST_PAD (l->data); ++ ++ g_signal_handlers_disconnect_by_func (pad, caps_notify_cb, chain); ++ gst_object_unref (pad); ++ l->data = NULL; ++ } ++ g_list_free (chain->pending_pads); ++ chain->pending_pads = NULL; ++ ++ for (l = chain->elements; l; l = l->next) { ++ GstElement *element = GST_ELEMENT (l->data); ++ ++ g_signal_handlers_disconnect_by_func (element, pad_added_cb, chain); ++ g_signal_handlers_disconnect_by_func (element, pad_removed_cb, chain); ++ g_signal_handlers_disconnect_by_func (element, no_more_pads_cb, chain); ++ ++ if (GST_OBJECT_PARENT (element) == GST_OBJECT_CAST (chain->dbin)) ++ gst_bin_remove (GST_BIN_CAST (chain->dbin), element); ++ if (!hide) { ++ gst_element_set_state (element, GST_STATE_NULL); ++ } ++ ++ GST_OBJECT_LOCK (chain->dbin); ++ /* remove possible subtitle element */ ++ chain->dbin->subtitles = g_list_remove (chain->dbin->subtitles, element); ++ GST_OBJECT_UNLOCK (chain->dbin); ++ ++ if (!hide) { ++ gst_object_unref (element); ++ l->data = NULL; ++ } ++ } ++ if (!hide) { ++ g_list_free (chain->elements); ++ chain->elements = NULL; ++ } ++ ++ if (chain->endpad) { ++ if (chain->endpad->exposed) ++ gst_element_remove_pad (GST_ELEMENT_CAST (chain->dbin), ++ GST_PAD_CAST (chain->endpad)); ++ ++ chain->endpad->exposed = FALSE; ++ if (!hide) { ++ gst_object_unref (chain->endpad); ++ chain->endpad = NULL; ++ } ++ } ++ ++ GST_DEBUG_OBJECT (chain->dbin, "%s chain %p", (hide ? "Hided" : "Freed"), ++ chain); ++ CHAIN_MUTEX_UNLOCK (chain); ++ if (!hide) { ++ g_mutex_free (chain->lock); ++ g_slice_free (GstDecodeChain, chain); ++ } ++} ++ ++/* gst_decode_chain_free: ++ * ++ * Completely frees and removes the chain and all ++ * child groups from decodebin2. ++ * ++ * MT-safe, don't hold the chain lock or any child chain's lock ++ * when calling this! ++ */ ++static void ++gst_decode_chain_free (GstDecodeChain * chain) ++{ ++ gst_decode_chain_free_internal (chain, FALSE); ++} ++ ++/* gst_decode_chain_new: ++ * ++ * Creates a new decode chain and initializes it. ++ * ++ * It's up to the caller to add it to the list of child chains of ++ * a group! ++ */ ++static GstDecodeChain * ++gst_decode_chain_new (GstDecodeBin * dbin, GstDecodeGroup * parent) ++{ ++ GstDecodeChain *chain = g_slice_new0 (GstDecodeChain); ++ ++ GST_DEBUG_OBJECT (dbin, "Creating new chain %p with parent group %p", chain, ++ parent); ++ ++ chain->dbin = dbin; ++ chain->parent = parent; ++ chain->lock = g_mutex_new (); ++ ++ return chain; ++} + + /**** + * GstDecodeGroup functions +@@ -1754,135 +1946,152 @@ static void + multi_queue_overrun_cb (GstElement * queue, GstDecodeGroup * group) + { + GstDecodeBin *dbin; +- gboolean expose; + + dbin = group->dbin; + +- GST_LOG_OBJECT (dbin, "multiqueue %p is full", queue); ++ GST_LOG_OBJECT (dbin, "multiqueue '%s' (%p) is full", GST_OBJECT_NAME (queue), ++ queue); + +- GROUP_MUTEX_LOCK (group); +- if (group->complete) { +- /* the group was already complete (had the no_more_pads called), we +- * can ignore the overrun signal, the last remaining dynamic element +- * will expose the group eventually. */ +- GST_LOG_OBJECT (dbin, "group %p was already complete", group); +- expose = FALSE; +- } else { +- /* set number of dynamic element to 0, we don't expect anything anymore +- * and we need the groups to be 0 for the expose to work */ +- group->nbdynamic = 0; +- expose = TRUE; +- } +- GROUP_MUTEX_UNLOCK (group); ++ group->overrun = TRUE; ++ ++ /* FIXME: We should make sure that everything gets exposed now ++ * even if child chains are not complete because the will never ++ * be complete! Ignore any non-complete chains when exposing ++ * and never expose them later ++ */ + +- if (expose) { +- DECODE_BIN_LOCK (dbin); +- if (!gst_decode_group_expose (group)) ++ EXPOSE_LOCK (dbin); ++ if (gst_decode_chain_is_complete (dbin->decode_chain)) { ++ if (!gst_decode_bin_expose (dbin)) + GST_WARNING_OBJECT (dbin, "Couldn't expose group"); +- DECODE_BIN_UNLOCK (group->dbin); + } ++ EXPOSE_UNLOCK (group->dbin); + } + +-/* gst_decode_group_new: +- * +- * Creates a new GstDecodeGroup. It is up to the caller to add it to the list +- * of groups. +- */ +-static GstDecodeGroup * +-gst_decode_group_new (GstDecodeBin * dbin, gboolean use_queue) ++static void ++gst_decode_group_free_internal (GstDecodeGroup * group, gboolean hide) + { +- GstDecodeGroup *group; +- GstElement *mq; ++ GList *l; + +- GST_LOG_OBJECT (dbin, "Creating new group"); ++ GST_DEBUG_OBJECT (group->dbin, "%s group %p", (hide ? "Hiding" : "Freeing"), ++ group); ++ for (l = group->children; l; l = l->next) { ++ GstDecodeChain *chain = (GstDecodeChain *) l->data; + +- if (use_queue) { +- if (!(mq = gst_element_factory_make ("multiqueue", NULL))) { +- GST_ERROR_OBJECT (dbin, "Couldn't create multiqueue element"); +- return NULL; ++ gst_decode_chain_free_internal (chain, hide); ++ if (!hide) ++ l->data = NULL; ++ } ++ if (!hide) { ++ g_list_free (group->children); ++ group->children = NULL; ++ } ++ ++ if (!hide) { ++ for (l = group->reqpads; l; l = l->next) { ++ GstPad *pad = l->data; ++ ++ gst_element_release_request_pad (group->multiqueue, pad); ++ gst_object_unref (pad); ++ l->data = NULL; + } +- } else { +- mq = NULL; ++ g_list_free (group->reqpads); ++ group->reqpads = NULL; + } + +- group = g_new0 (GstDecodeGroup, 1); +- group->lock = g_mutex_new (); +- group->dbin = dbin; +- group->multiqueue = mq; +- group->exposed = FALSE; +- group->drained = FALSE; +- group->blocked = FALSE; +- group->complete = FALSE; +- group->endpads = NULL; +- group->reqpads = NULL; +- +- if (mq) { +- /* we first configure the multiqueue to buffer an unlimited number of +- * buffers up to 5 seconds or, when no timestamps are present, up to 2 MB of +- * memory. When this queue overruns, we assume the group is complete and can +- * be exposed. */ +- g_object_set (G_OBJECT (mq), +- "max-size-bytes", (guint) 2 * 1024 * 1024, +- "max-size-time", (guint64) 0, "max-size-buffers", (guint) 0, NULL); +- /* will expose the group */ +- group->overrunsig = g_signal_connect (G_OBJECT (mq), "overrun", +- G_CALLBACK (multi_queue_overrun_cb), group); +- +- gst_bin_add (GST_BIN (dbin), mq); +- gst_element_set_state (mq, GST_STATE_PAUSED); +- } +- +- GST_LOG_OBJECT (dbin, "Returning new group %p", group); ++ if (group->multiqueue) { ++ if (group->overrunsig) { ++ g_signal_handler_disconnect (group->multiqueue, group->overrunsig); ++ group->overrunsig = 0; ++ } + +- return group; ++ if (GST_OBJECT_PARENT (group->multiqueue) == GST_OBJECT_CAST (group->dbin)) ++ gst_bin_remove (GST_BIN_CAST (group->dbin), group->multiqueue); ++ if (!hide) { ++ gst_element_set_state (group->multiqueue, GST_STATE_NULL); ++ gst_object_unref (group->multiqueue); ++ group->multiqueue = NULL; ++ } ++ } ++ ++ GST_DEBUG_OBJECT (group->dbin, "%s group %p", (hide ? "Hided" : "Freed"), ++ group); ++ if (!hide) ++ g_slice_free (GstDecodeGroup, group); + } + +-/* get_current_group: +- * @dbin: the decodebin +- * @create: create the group when not present +- * @as_demux: create the group as a demuxer +- * @created: result when the group was created ++/* gst_decode_group_free: + * +- * Returns the current non-completed group. The dynamic refcount of the group is +- * increased when dealing with a demuxer. ++ * Completely frees and removes the decode group and all ++ * it's children. + * +- * Returns: %NULL if no groups are available, or all groups are completed. ++ * Never call this from any streaming thread! ++ * ++ * Not MT-safe, call with parent's chain lock! ++ */ ++static void ++gst_decode_group_free (GstDecodeGroup * group) ++{ ++ gst_decode_group_free_internal (group, FALSE); ++} ++ ++/* gst_decode_group_hide: ++ * ++ * Hide the decode group only, this means that ++ * all child endpads are removed from decodebin2 ++ * and all signals are unconnected. ++ * ++ * No element is set to NULL state and completely ++ * unreffed here. ++ * ++ * Can be called from streaming threads. ++ * ++ * Not MT-safe, call with parent's chain lock! ++ */ ++static void ++gst_decode_group_hide (GstDecodeGroup * group) ++{ ++ gst_decode_group_free_internal (group, TRUE); ++} ++ ++/* gst_decode_group_new: ++ * @dbin: Parent decodebin ++ * @parent: Parent chain or %NULL ++ * ++ * Creates a new GstDecodeGroup. It is up to the caller to add it to the list ++ * of groups. + */ + static GstDecodeGroup * +-get_current_group (GstDecodeBin * dbin, gboolean create, gboolean as_demux, +- gboolean * created) ++gst_decode_group_new (GstDecodeBin * dbin, GstDecodeChain * parent) + { +- GList *tmp; +- GstDecodeGroup *group = NULL; ++ GstDecodeGroup *group = g_slice_new0 (GstDecodeGroup); ++ GstElement *mq; + +- DECODE_BIN_LOCK (dbin); +- for (tmp = dbin->groups; tmp; tmp = g_list_next (tmp)) { +- GstDecodeGroup *this = (GstDecodeGroup *) tmp->data; ++ GST_DEBUG_OBJECT (dbin, "Creating new group %p with parent chain %p", group, ++ parent); + +- GROUP_MUTEX_LOCK (this); +- GST_LOG_OBJECT (dbin, "group %p, complete:%d", this, this->complete); ++ group->dbin = dbin; ++ group->parent = parent; + +- if (!this->complete) { +- group = this; +- GROUP_MUTEX_UNLOCK (this); +- break; +- } else { +- GROUP_MUTEX_UNLOCK (this); +- } +- } +- if (group == NULL && create) { +- group = gst_decode_group_new (dbin, as_demux); +- GST_LOG_OBJECT (dbin, "added group %p, demux %d", group, as_demux); +- dbin->groups = g_list_prepend (dbin->groups, group); +- if (created) +- *created = TRUE; +- /* demuxers are dynamic, we need no-more-pads or overrun now */ +- if (as_demux) +- group->nbdynamic++; ++ mq = group->multiqueue = gst_element_factory_make ("multiqueue", NULL); ++ if (G_UNLIKELY (!group->multiqueue)) { ++ gst_element_post_message (GST_ELEMENT_CAST (dbin), ++ gst_missing_element_message_new (GST_ELEMENT_CAST (dbin), ++ "multiqueue")); ++ GST_ELEMENT_ERROR (dbin, CORE, MISSING_PLUGIN, (NULL), ("no multiqueue!")); ++ g_slice_free (GstDecodeGroup, group); ++ return NULL; + } +- DECODE_BIN_UNLOCK (dbin); + +- GST_LOG_OBJECT (dbin, "Returning group %p", group); ++ g_object_set (G_OBJECT (mq), ++ "max-size-bytes", (guint) 2 * 1024 * 1024, ++ "max-size-time", (guint64) 0, "max-size-buffers", (guint) 0, NULL); ++ ++ group->overrunsig = g_signal_connect (G_OBJECT (mq), "overrun", ++ G_CALLBACK (multi_queue_overrun_cb), group); ++ ++ gst_bin_add (GST_BIN (dbin), gst_object_ref (mq)); ++ gst_element_set_state (mq, GST_STATE_PAUSED); + + return group; + } +@@ -1907,6 +2116,9 @@ gst_decode_group_control_demuxer_pad (GstDecodeGroup * group, GstPad * pad) + + srcpad = NULL; + ++ if (G_UNLIKELY (!group->multiqueue)) ++ return NULL; ++ + if (!(sinkpad = gst_element_get_request_pad (group->multiqueue, "sink%d"))) { + GST_ERROR_OBJECT (dbin, "Couldn't get sinkpad from multiqueue"); + return NULL; +@@ -1917,15 +2129,14 @@ gst_decode_group_control_demuxer_pad (GstDecodeGroup * group, GstPad * pad) + goto beach; + } + +- group->reqpads = g_list_prepend (group->reqpads, sinkpad); ++ CHAIN_MUTEX_LOCK (group->parent); ++ group->reqpads = g_list_prepend (group->reqpads, gst_object_ref (sinkpad)); + + sinkname = gst_pad_get_name (sinkpad); + nb = sinkname + 4; + srcname = g_strdup_printf ("src%s", nb); + g_free (sinkname); + +- GROUP_MUTEX_LOCK (group); +- + if (!(srcpad = gst_element_get_static_pad (group->multiqueue, srcname))) { + GST_ERROR_OBJECT (dbin, "Couldn't get srcpad %s from multiqueue", srcname); + goto chiringuito; +@@ -1933,163 +2144,224 @@ gst_decode_group_control_demuxer_pad (GstDecodeGroup * group, GstPad * pad) + + chiringuito: + g_free (srcname); +- GROUP_MUTEX_UNLOCK (group); ++ CHAIN_MUTEX_UNLOCK (group->parent); + + beach: + gst_object_unref (sinkpad); + return srcpad; + } + ++/* gst_decode_group_is_complete: ++ * ++ * Checks if the group is complete, this means that ++ * a) overrun of the multiqueue or no-more-pads happened ++ * b) all child chains are complete ++ * ++ * Not MT-safe, always call with decodebin expose lock ++ */ + static gboolean +-gst_decode_group_control_source_pad (GstDecodeGroup * group, +- GstDecodePad * dpad) ++gst_decode_group_is_complete (GstDecodeGroup * group) + { +- g_return_val_if_fail (group != NULL, FALSE); ++ GList *l; ++ gboolean complete = TRUE; + +- GST_DEBUG_OBJECT (dpad, "adding decode pad to group %p", group); ++ if (!group->overrun && !group->no_more_pads) { ++ complete = FALSE; ++ goto out; ++ } + +- /* FIXME : check if pad is already controlled */ +- gst_decode_pad_activate (dpad, group); ++ for (l = group->children; l; l = l->next) { ++ GstDecodeChain *chain = l->data; + +- GROUP_MUTEX_LOCK (group); +- group->endpads = g_list_prepend (group->endpads, gst_object_ref (dpad)); +- GROUP_MUTEX_UNLOCK (group); ++ if (!gst_decode_chain_is_complete (chain)) { ++ complete = FALSE; ++ goto out; ++ } ++ } + +- return TRUE; ++out: ++ GST_DEBUG_OBJECT (group->dbin, "Group %p is complete: %d", group, complete); ++ return complete; + } + +-/* gst_decode_group_check_if_blocked: ++/* gst_decode_chain_is_complete: + * +- * Call this when one of the pads blocked status has changed. +- * If the group is complete and blocked, the group will be marked as blocked +- * and will ghost/expose all pads on decodebin if the group is the current one. ++ * Returns TRUE if the chain is complete, this means either ++ * a) This chain is a dead end, i.e. we have no suitable plugins ++ * b) This chain ends in an endpad and this is blocked + * +- * Call with the group lock taken ! MT safe +- * +- * Returns: TRUE when the group is completely blocked and ready to be exposed. ++ * Not MT-safe, always call with decodebin expose lock + */ + static gboolean +-gst_decode_group_check_if_blocked (GstDecodeGroup * group) ++gst_decode_chain_is_complete (GstDecodeChain * chain) + { +- GstDecodeBin *dbin; +- GList *tmp; +- gboolean blocked = TRUE; +- +- dbin = group->dbin; +- +- GST_LOG_OBJECT (dbin, "group : %p , ->complete:%d , ->nbdynamic:%d", +- group, group->complete, group->nbdynamic); ++ gboolean complete = FALSE; + +- /* don't do anything if group is not complete */ +- if (!group->complete || group->nbdynamic) { +- GST_DEBUG_OBJECT (group->dbin, "Group isn't complete yet"); +- return FALSE; ++ if (chain->deadend || (chain->endpad && chain->endpad->blocked)) { ++ complete = TRUE; ++ goto out; + } + +- for (tmp = group->endpads; tmp; tmp = g_list_next (tmp)) { +- GstDecodePad *dpad = (GstDecodePad *) tmp->data; +- +- if (!dpad->blocked) { +- blocked = FALSE; +- break; ++ if (chain->demuxer) { ++ if (chain->active_group ++ && gst_decode_group_is_complete (chain->active_group)) { ++ complete = TRUE; ++ goto out; + } + } + +- /* Update status of group */ +- group->blocked = blocked; +- GST_LOG_OBJECT (dbin, "group is blocked:%d", blocked); ++out: ++ GST_DEBUG_OBJECT (chain->dbin, "Chain %p is complete: %d", chain, complete); ++ return complete; ++} + +- return blocked; ++/* check if the group is drained, meaning all pads have seen an EOS ++ * event. */ ++static void ++gst_decode_pad_handle_eos (GstDecodePad * pad) ++{ ++ GstDecodeChain *chain = pad->chain; ++ ++ GST_LOG_OBJECT (pad->dbin, "chain : %p, pad %p", chain, pad); ++ pad->drained = TRUE; ++ gst_decode_chain_handle_eos (chain); + } + +-/* activate the next group when there is one ++/* gst_decode_chain_handle_eos: ++ * ++ * Checks if there are next groups in any parent chain ++ * to which we can switch or if everything is drained. + * +- * Returns: TRUE when group was the active group and there was a +- * next group to activate. ++ * If there are groups to switch to, hide the current active ++ * one and expose the new one. ++ * ++ * MT-safe, don't call with chain lock! + */ +-static gboolean +-gst_decode_bin_activate_next_group (GstDecodeBin * dbin, GstDecodeGroup * group) ++static void ++gst_decode_chain_handle_eos (GstDecodeChain * eos_chain) + { +- gboolean have_next = FALSE; +- +- DECODE_BIN_LOCK (dbin); +- /* Check if there is a next group to activate */ +- if ((group == dbin->activegroup) && dbin->groups) { +- GstDecodeGroup *newgroup; ++ GstDecodeBin *dbin = eos_chain->dbin; ++ GstDecodeGroup *group = eos_chain->parent; ++ GstDecodeChain *chain = eos_chain; ++ gboolean drained; + +- /* get the next group */ +- newgroup = (GstDecodeGroup *) dbin->groups->data; ++ g_return_if_fail (eos_chain->endpad); + +- GST_DEBUG_OBJECT (dbin, "Switching to new group"); ++ CHAIN_MUTEX_LOCK (chain); ++ while ((group = chain->parent)) { ++ CHAIN_MUTEX_UNLOCK (chain); ++ chain = group->parent; ++ CHAIN_MUTEX_LOCK (chain); + +- /* hide current group */ +- gst_decode_group_hide (group); +- /* expose next group */ +- gst_decode_group_expose (newgroup); +- +- /* we have a next group */ +- have_next = TRUE; ++ if (gst_decode_group_is_drained (group)) { ++ continue; ++ } ++ break; + } +- DECODE_BIN_UNLOCK (dbin); + +- return have_next; ++ drained = ++ chain->active_group ? gst_decode_group_is_drained (chain-> ++ active_group) : TRUE; ++ ++ /* Now either group == NULL and chain == dbin->decode_chain ++ * or chain is the lowest chain that has a non-drained group */ ++ if (chain->active_group && drained && chain->next_groups) { ++ GST_DEBUG_OBJECT (dbin, "Hiding current group %p", chain->active_group); ++ gst_decode_group_hide (chain->active_group); ++ chain->old_groups = g_list_prepend (chain->old_groups, chain->active_group); ++ GST_DEBUG_OBJECT (dbin, "Switching to next group %p", ++ chain->next_groups->data); ++ chain->active_group = chain->next_groups->data; ++ chain->next_groups = ++ g_list_delete_link (chain->next_groups, chain->next_groups); ++ CHAIN_MUTEX_UNLOCK (chain); ++ EXPOSE_LOCK (dbin); ++ if (gst_decode_chain_is_complete (dbin->decode_chain)) ++ gst_decode_bin_expose (dbin); ++ EXPOSE_UNLOCK (dbin); ++ } else if (!chain->active_group || drained) { ++ g_assert (chain == dbin->decode_chain); ++ CHAIN_MUTEX_UNLOCK (chain); ++ ++ GST_LOG_OBJECT (dbin, "all groups drained, fire signal"); ++ g_signal_emit (G_OBJECT (dbin), gst_decode_bin_signals[SIGNAL_DRAINED], 0, ++ NULL); ++ } else { ++ CHAIN_MUTEX_UNLOCK (chain); ++ GST_DEBUG_OBJECT (dbin, ++ "Current active group in chain %p is not drained yet", chain); ++ } + } + +-/* check if the group is drained, meaning all pads have seen an EOS +- * event. */ +-static void +-gst_decode_pad_handle_eos (GstDecodePad * pad) ++/* gst_decode_group_is_drained: ++ * ++ * Check is this group is drained and cache this result. ++ * The group is drained if all child chains are drained. ++ * ++ * Not MT-safe, call with group->parent's lock */ ++static gboolean ++gst_decode_group_is_drained (GstDecodeGroup * group) + { +- GList *tmp; +- GstDecodeBin *dbin; +- GstDecodeGroup *group; ++ GList *l; + gboolean drained = TRUE; + +- group = pad->group; +- dbin = group->dbin; ++ if (group->drained) { ++ drained = TRUE; ++ goto out; ++ } + +- GST_LOG_OBJECT (dbin, "group : %p, pad %p", group, pad); ++ for (l = group->children; l; l = l->next) { ++ GstDecodeChain *chain = l->data; + +- GROUP_MUTEX_LOCK (group); +- /* mark pad as drained */ +- pad->drained = TRUE; +- +- /* Ensure we only emit the drained signal once, for this group */ +- if (group->drained) +- goto was_drained; ++ CHAIN_MUTEX_LOCK (chain); ++ if (!gst_decode_chain_is_drained (chain)) ++ drained = FALSE; ++ CHAIN_MUTEX_UNLOCK (chain); ++ if (!drained) ++ goto out; ++ } ++ group->drained = drained; + +- for (tmp = group->endpads; tmp; tmp = g_list_next (tmp)) { +- GstDecodePad *dpad = (GstDecodePad *) tmp->data; ++out: ++ GST_DEBUG_OBJECT (group->dbin, "Group %p is drained: %d", group, drained); ++ return drained; ++} + +- GST_LOG_OBJECT (dbin, "testing dpad %p %d", dpad, dpad->drained); ++/* gst_decode_chain_is_drained: ++ * ++ * Check is the chain is drained, which means that ++ * either ++ * ++ * a) it's endpad is drained ++ * b) there are no pending pads, the active group is drained ++ * and there are no next groups ++ * ++ * Not MT-safe, call with chain lock ++ */ ++static gboolean ++gst_decode_chain_is_drained (GstDecodeChain * chain) ++{ ++ gboolean drained = FALSE; + +- if (!dpad->drained) { +- drained = FALSE; +- break; +- } ++ if (chain->endpad) { ++ drained = chain->endpad->drained; ++ goto out; + } +- group->drained = drained; +- GROUP_MUTEX_UNLOCK (group); +- +- if (drained) { +- /* the current group is completely drained, try to activate the next +- * group. this function returns FALSE if there was no next group activated +- * and so we are really drained. */ +- if (!gst_decode_bin_activate_next_group (dbin, group)) { +- /* no more groups to activate, we're completely drained now */ +- GST_LOG_OBJECT (dbin, "all groups drained, fire signal"); +- g_signal_emit (G_OBJECT (dbin), gst_decode_bin_signals[SIGNAL_DRAINED], 0, +- NULL); +- } ++ ++ if (chain->pending_pads) { ++ drained = FALSE; ++ goto out; + } +- return; + +-was_drained: +- { +- GST_LOG_OBJECT (dbin, "group was already drained"); +- GROUP_MUTEX_UNLOCK (group); +- return; ++ if (chain->active_group && gst_decode_group_is_drained (chain->active_group) ++ && !chain->next_groups) { ++ drained = TRUE; ++ goto out; + } ++ ++out: ++ GST_DEBUG_OBJECT (chain->dbin, "Chain %p is drained: %d", chain, drained); ++ return drained; + } + + /* sort_end_pads: +@@ -2100,7 +2372,6 @@ was_drained: + * + * Return: negative if ab + */ +- + static gint + sort_end_pads (GstDecodePad * da, GstDecodePad * db) + { +@@ -2146,74 +2417,62 @@ sort_end_pads (GstDecodePad * da, GstDecodePad * db) + return va - vb; + } + +-/* gst_decode_group_expose: +- * +- * Expose this group's pads. +- * +- * Not MT safe, please take the decodebin lock +- */ ++/* Must only be called if the toplevel chain is complete and blocked! */ ++/* Not MT-safe, call with decodebin expose lock! */ + static gboolean +-gst_decode_group_expose (GstDecodeGroup * group) ++gst_decode_bin_expose (GstDecodeBin * dbin) + { +- GList *tmp; +- GList *next = NULL; +- GstDecodeBin *dbin; ++ GList *tmp, *endpads = NULL; ++ gboolean already_exposed = TRUE; + +- dbin = group->dbin; ++ GST_DEBUG_OBJECT (dbin, "Exposing currently active chains/groups"); + +- GST_DEBUG_OBJECT (dbin, "going to expose group %p", group); +- +- if (group->nbdynamic) { +- GST_DEBUG_OBJECT (dbin, +- "Group %p still has %d dynamic objects, not exposing yet", group, +- group->nbdynamic); ++ /* Get the pads that we're going to expose and mark things as exposed */ ++ if (!gst_decode_chain_expose (dbin->decode_chain, &endpads)) { ++ g_list_foreach (endpads, (GFunc) gst_object_unref, NULL); ++ g_list_free (endpads); ++ GST_ERROR_OBJECT (dbin, "Broken chain/group tree"); ++ g_return_val_if_reached (FALSE); + return FALSE; + } +- +- if (dbin->activegroup == group) { +- GST_DEBUG_OBJECT (dbin, "Group %p is already exposed, all is fine", group); +- return TRUE; ++ if (endpads == NULL) { ++ GST_WARNING_OBJECT (dbin, "No suitable plugins found"); ++ GST_ELEMENT_ERROR (dbin, CORE, MISSING_PLUGIN, (NULL), ++ ("no suitable plugins found")); ++ return FALSE; + } + +- if (group->multiqueue) { +- /* update runtime limits. At runtime, we try to keep the amount of buffers +- * in the queues as low as possible (but at least 5 buffers). */ +- g_object_set (G_OBJECT (group->multiqueue), +- "max-size-bytes", 2 * 1024 * 1024, "max-size-buffers", 5, NULL); +- /* we can now disconnect any overrun signal, which is used to expose the +- * group. */ +- if (group->overrunsig) { +- GST_LOG_OBJECT (dbin, "Disconnecting overrun"); +- g_signal_handler_disconnect (group->multiqueue, group->overrunsig); +- group->overrunsig = 0; +- } +- } ++ /* Check if this was called when everything was exposed already */ ++ for (tmp = endpads; tmp && already_exposed; tmp = tmp->next) { ++ GstDecodePad *dpad = tmp->data; + +- if (dbin->activegroup) { +- GST_DEBUG_OBJECT (dbin, +- "another group %p is already exposed, waiting for EOS", +- dbin->activegroup); ++ already_exposed &= dpad->exposed; ++ if (!already_exposed) ++ break; ++ } ++ if (already_exposed) { ++ GST_DEBUG_OBJECT (dbin, "Everything was exposed already!"); ++ g_list_foreach (endpads, (GFunc) gst_object_unref, NULL); ++ g_list_free (endpads); + return TRUE; + } + +- if (!dbin->groups || (group != (GstDecodeGroup *) dbin->groups->data)) { +- GST_WARNING_OBJECT (dbin, "Group %p is not the first group to expose", +- group); +- return FALSE; +- } ++ /* Set all already exposed pads to blocked */ ++ for (tmp = endpads; tmp; tmp = tmp->next) { ++ GstDecodePad *dpad = tmp->data; + +- GST_LOG_OBJECT (dbin, "Exposing group %p", group); ++ if (dpad->exposed) ++ gst_decode_pad_set_blocked (dpad, TRUE); ++ } + + /* re-order pads : video, then audio, then others */ +- group->endpads = g_list_sort (group->endpads, (GCompareFunc) sort_end_pads); ++ endpads = g_list_sort (endpads, (GCompareFunc) sort_end_pads); + + /* Expose pads */ +- for (tmp = group->endpads; tmp; tmp = next) { ++ for (tmp = endpads; tmp; tmp = tmp->next) { + GstDecodePad *dpad = (GstDecodePad *) tmp->data; + gchar *padname; + +- next = g_list_next (tmp); +- + /* 1. rewrite name */ + padname = g_strdup_printf ("src%d", dbin->nbpads); + dbin->nbpads++; +@@ -2223,18 +2482,19 @@ gst_decode_group_expose (GstDecodeGroup * group) + g_free (padname); + + /* 2. activate and add */ +- if (!gst_element_add_pad (GST_ELEMENT (dbin), GST_PAD (dpad))) { ++ if (!dpad->exposed ++ && !gst_element_add_pad (GST_ELEMENT (dbin), GST_PAD (dpad))) { + /* not really fatal, we can try to add the other pads */ + g_warning ("error adding pad to decodebin2"); + continue; + } +- dpad->added = TRUE; ++ dpad->exposed = TRUE; + + /* 3. emit signal */ + GST_DEBUG_OBJECT (dbin, "emitting new-decoded-pad"); + g_signal_emit (G_OBJECT (dbin), + gst_decode_bin_signals[SIGNAL_NEW_DECODED_PAD], 0, dpad, +- (next == NULL)); ++ (tmp->next == NULL)); + GST_DEBUG_OBJECT (dbin, "emitted new-decoded-pad"); + } + +@@ -2245,223 +2505,73 @@ gst_decode_group_expose (GstDecodeGroup * group) + + /* 4. Unblock internal pads. The application should have connected stuff now + * so that streaming can continue. */ +- for (tmp = group->endpads; tmp; tmp = next) { ++ for (tmp = endpads; tmp; tmp = tmp->next) { + GstDecodePad *dpad = (GstDecodePad *) tmp->data; + +- next = g_list_next (tmp); +- + GST_DEBUG_OBJECT (dpad, "unblocking"); + gst_decode_pad_unblock (dpad); + GST_DEBUG_OBJECT (dpad, "unblocked"); ++ gst_object_unref (dpad); + } +- +- dbin->activegroup = group; +- +- /* pop off the first group */ +- if (dbin->groups && dbin->groups->data) { +- GST_LOG_OBJECT (dbin, "removed group %p", dbin->groups->data); +- dbin->groups = g_list_delete_link (dbin->groups, dbin->groups); +- } else { +- GST_LOG_OBJECT (dbin, "no more groups"); +- } ++ g_list_free (endpads); + + do_async_done (dbin); +- +- group->exposed = TRUE; +- +- GST_LOG_OBJECT (dbin, "Group %p exposed", group); ++ GST_DEBUG_OBJECT (dbin, "Exposed everything"); + return TRUE; + } + +-/* must be called with the decodebin lock */ +-static void +-gst_decode_group_hide (GstDecodeGroup * group) +-{ +- GList *tmp; +- GstDecodeBin *dbin; +- +- dbin = group->dbin; +- +- GST_LOG_OBJECT (dbin, "Hiding group %p", group); +- +- if (group != dbin->activegroup) { +- GST_WARNING_OBJECT (dbin, "This group is not the active one, ignoring"); +- return; +- } +- +- GROUP_MUTEX_LOCK (group); +- /* Remove ghost pads */ +- for (tmp = group->endpads; tmp; tmp = g_list_next (tmp)) { +- GstDecodePad *dpad = (GstDecodePad *) tmp->data; +- +- if (dpad->added) +- gst_element_remove_pad (GST_ELEMENT (group->dbin), GST_PAD (dpad)); +- dpad->added = FALSE; +- } +- group->exposed = FALSE; +- GROUP_MUTEX_UNLOCK (group); +- +- group->dbin->activegroup = NULL; +- group->dbin->oldgroups = g_list_prepend (group->dbin->oldgroups, group); +-} +- +-static void +-deactivate_free_recursive (GstDecodeGroup * group, GstElement * element) ++/* gst_decode_chain_expose: ++ * ++ * Check if the chain can be exposed and add all endpads ++ * to the endpads list. ++ * ++ * Also update the active group's multiqueue to the ++ * runtime limits. ++ * ++ * Not MT-safe, call with decodebin expose lock! * ++ */ ++static gboolean ++gst_decode_chain_expose (GstDecodeChain * chain, GList ** endpads) + { +- GstIterator *it; +- GstIteratorResult res; +- gpointer point; +- GstDecodeBin *dbin; +- +- dbin = group->dbin; +- +- GST_LOG_OBJECT (dbin, "element:%s", GST_ELEMENT_NAME (element)); +- +- /* call on downstream elements */ +- it = gst_element_iterate_src_pads (element); +- +-restart: +- +- while (1) { +- res = gst_iterator_next (it, &point); +- switch (res) { +- case GST_ITERATOR_DONE: +- goto done; +- case GST_ITERATOR_RESYNC: +- gst_iterator_resync (it); +- goto restart; +- case GST_ITERATOR_ERROR: +- { +- GST_WARNING_OBJECT (dbin, +- "Had an error while iterating source pads of element: %s", +- GST_ELEMENT_NAME (element)); +- goto beach; +- } +- case GST_ITERATOR_OK: +- { +- GstPad *pad = GST_PAD (point); +- GstPad *peerpad = NULL; +- +- if ((peerpad = gst_pad_get_peer (pad))) { +- GstObject *parent; ++ GstDecodeGroup *group; ++ GList *l; + +- parent = gst_pad_get_parent (peerpad); +- gst_object_unref (peerpad); ++ if (chain->deadend) ++ return TRUE; + +- if (parent && GST_IS_ELEMENT (parent)) +- deactivate_free_recursive (group, GST_ELEMENT (parent)); +- if (parent) +- gst_object_unref (parent); +- } +- } +- break; +- default: +- break; +- } ++ if (chain->endpad) { ++ if (!chain->endpad->blocked) ++ return FALSE; ++ *endpads = g_list_prepend (*endpads, gst_object_ref (chain->endpad)); ++ return TRUE; + } + +-done: +- gst_element_set_state (element, GST_STATE_NULL); +- GST_OBJECT_LOCK (dbin); +- /* remove possible subtitle element */ +- dbin->subtitles = g_list_remove (dbin->subtitles, element); +- GST_OBJECT_UNLOCK (dbin); +- gst_bin_remove (GST_BIN (dbin), element); +- +-beach: +- gst_iterator_free (it); +- +- return; +-} +- +-static void +-gst_decode_group_free (GstDecodeGroup * group) +-{ +- GstDecodeBin *dbin; +- GList *tmp; +- +- dbin = group->dbin; +- +- GST_LOG_OBJECT (dbin, "group %p", group); +- +- GROUP_MUTEX_LOCK (group); +- +- /* remove exposed pads */ +- if (group == dbin->activegroup) { +- for (tmp = group->endpads; tmp; tmp = g_list_next (tmp)) { +- GstDecodePad *dpad = (GstDecodePad *) tmp->data; ++ group = chain->active_group; ++ if (!group) ++ return FALSE; ++ if (!group->no_more_pads && !group->overrun) ++ return FALSE; + +- if (dpad->added) +- gst_element_remove_pad (GST_ELEMENT (dbin), GST_PAD (dpad)); +- dpad->added = FALSE; +- } ++ /* update runtime limits. At runtime, we try to keep the amount of buffers ++ * in the queues as low as possible (but at least 5 buffers). */ ++ g_object_set (G_OBJECT (group->multiqueue), ++ "max-size-bytes", 2 * 1024 * 1024, "max-size-buffers", 5, NULL); ++ /* we can now disconnect any overrun signal, which is used to expose the ++ * group. */ ++ if (group->overrunsig) { ++ GST_LOG_OBJECT (group->dbin, "Disconnecting overrun"); ++ g_signal_handler_disconnect (group->multiqueue, group->overrunsig); ++ group->overrunsig = 0; + } + +- /* Clear all GstDecodePad */ +- for (tmp = group->endpads; tmp; tmp = g_list_next (tmp)) +- gst_object_unref (tmp->data); +- g_list_free (group->endpads); +- group->endpads = NULL; ++ for (l = group->children; l; l = l->next) { ++ GstDecodeChain *childchain = l->data; + +- /* release request pads */ +- for (tmp = group->reqpads; tmp; tmp = g_list_next (tmp)) { +- gst_element_release_request_pad (group->multiqueue, GST_PAD (tmp->data)); ++ if (!gst_decode_chain_expose (childchain, endpads)) ++ return FALSE; + } +- g_list_free (group->reqpads); +- group->reqpads = NULL; + +- /* disconnect signal handlers on multiqueue */ +- if (group->multiqueue) { +- if (group->overrunsig) +- g_signal_handler_disconnect (group->multiqueue, group->overrunsig); +- deactivate_free_recursive (group, group->multiqueue); +- } +- +- /* remove all elements */ +- +- GROUP_MUTEX_UNLOCK (group); +- +- g_mutex_free (group->lock); +- g_free (group); +-} +- +-/* gst_decode_group_set_complete: +- * +- * Mark the group as complete. This means no more streams will be controlled +- * through this group. This method is usually called when we got no_more_pads or +- * when we added the last pad not from a demuxer. +- * +- * When this method is called, it is possible that some dynamic plugging is +- * going on in streaming threads. We decrement the dynamic counter and when it +- * reaches zero, we check if all of our pads are blocked before we finally +- * expose the group. +- * +- * MT safe +- */ +-static void +-gst_decode_group_set_complete (GstDecodeGroup * group) +-{ +- gboolean expose = FALSE; +- GstDecodeBin *dbin; +- +- dbin = group->dbin; +- +- GST_LOG_OBJECT (dbin, "Setting group %p to COMPLETE", group); +- +- GROUP_MUTEX_LOCK (group); +- group->complete = TRUE; +- if (group->nbdynamic > 0) +- group->nbdynamic--; +- expose = gst_decode_group_check_if_blocked (group); +- GROUP_MUTEX_UNLOCK (group); +- +- /* don't do anything if not blocked completely */ +- if (expose) { +- DECODE_BIN_LOCK (dbin); +- if (!gst_decode_group_expose (group)) +- GST_WARNING_OBJECT (dbin, "Couldn't expose group"); +- DECODE_BIN_UNLOCK (dbin); +- } ++ return TRUE; + } + + /************************* +@@ -2476,37 +2586,34 @@ gst_decode_pad_class_init (GstDecodePadClass * klass) + static void + gst_decode_pad_init (GstDecodePad * pad) + { +- pad->group = NULL; ++ pad->chain = NULL; + pad->blocked = FALSE; ++ pad->exposed = FALSE; + pad->drained = FALSE; + gst_object_ref (pad); + gst_object_sink (pad); + } + + static void +-source_pad_blocked_cb (GstPad * opad, gboolean blocked, GstDecodePad * dpad) ++source_pad_blocked_cb (GstPad * pad, gboolean blocked, GstDecodePad * dpad) + { +- GstDecodeGroup *group; ++ GstDecodeChain *chain; + GstDecodeBin *dbin; +- gboolean expose = FALSE; + +- group = dpad->group; +- dbin = group->dbin; ++ chain = dpad->chain; ++ dbin = chain->dbin; + +- GST_LOG_OBJECT (dpad, "blocked:%d, dpad->group:%p", blocked, group); ++ GST_LOG_OBJECT (dpad, "blocked:%d, dpad->chain:%p", blocked, chain); + +- GROUP_MUTEX_LOCK (group); +- /* Update this GstDecodePad status */ + dpad->blocked = blocked; +- if (blocked) +- expose = gst_decode_group_check_if_blocked (group); +- GROUP_MUTEX_UNLOCK (group); + +- if (expose) { +- DECODE_BIN_LOCK (dbin); +- if (!gst_decode_group_expose (group)) +- GST_WARNING_OBJECT (dbin, "Couldn't expose group"); +- DECODE_BIN_UNLOCK (dbin); ++ if (dpad->blocked) { ++ EXPOSE_LOCK (dbin); ++ if (gst_decode_chain_is_complete (dbin->decode_chain)) { ++ if (!gst_decode_bin_expose (dbin)) ++ GST_WARNING_OBJECT (dbin, "Couldn't expose group"); ++ } ++ EXPOSE_UNLOCK (dbin); + } + } + +@@ -2533,7 +2640,7 @@ gst_decode_pad_set_blocked (GstDecodePad * dpad, gboolean blocked) + GstDecodeBin *dbin = dpad->dbin; + GstPad *opad; + +- DECODE_BIN_DYN_LOCK (dbin); ++ DYN_LOCK (dbin); + opad = gst_ghost_pad_get_target (GST_GHOST_PAD_CAST (dpad)); + if (!opad) + goto out; +@@ -2550,13 +2657,16 @@ gst_decode_pad_set_blocked (GstDecodePad * dpad, gboolean blocked) + dbin->blocked_pads = g_list_prepend (dbin->blocked_pads, dpad); + } + } else { +- if (g_list_find (dbin->blocked_pads, dpad)) ++ GList *l; ++ ++ if ((l = g_list_find (dbin->blocked_pads, dpad))) { + gst_object_unref (dpad); +- dbin->blocked_pads = g_list_remove (dbin->blocked_pads, dpad); ++ dbin->blocked_pads = g_list_delete_link (dbin->blocked_pads, l); ++ } + } + gst_object_unref (opad); + out: +- DECODE_BIN_DYN_UNLOCK (dbin); ++ DYN_UNLOCK (dbin); + } + + static void +@@ -2567,11 +2677,11 @@ gst_decode_pad_add_drained_check (GstDecodePad * dpad) + } + + static void +-gst_decode_pad_activate (GstDecodePad * dpad, GstDecodeGroup * group) ++gst_decode_pad_activate (GstDecodePad * dpad, GstDecodeChain * chain) + { +- g_return_if_fail (group != NULL); ++ g_return_if_fail (chain != NULL); + +- dpad->group = group; ++ dpad->chain = chain; + gst_pad_set_active (GST_PAD (dpad), TRUE); + gst_decode_pad_set_blocked (dpad, TRUE); + gst_decode_pad_add_drained_check (dpad); +@@ -2588,7 +2698,7 @@ gst_decode_pad_unblock (GstDecodePad * dpad) + * Creates a new GstDecodePad for the given pad. + */ + static GstDecodePad * +-gst_decode_pad_new (GstDecodeBin * dbin, GstPad * pad, GstDecodeGroup * group) ++gst_decode_pad_new (GstDecodeBin * dbin, GstPad * pad, GstDecodeChain * chain) + { + GstDecodePad *dpad; + +@@ -2597,7 +2707,7 @@ gst_decode_pad_new (GstDecodeBin * dbin, GstPad * pad, GstDecodeGroup * group) + NULL); + gst_ghost_pad_construct (GST_GHOST_PAD (dpad)); + gst_ghost_pad_set_target (GST_GHOST_PAD (dpad), pad); +- dpad->group = group; ++ dpad->chain = chain; + dpad->dbin = dbin; + + return dpad; +@@ -2663,13 +2773,12 @@ find_sink_pad (GstElement * element) + static void + unblock_pads (GstDecodeBin * dbin) + { +- GList *tmp, *next; ++ GList *tmp; + +- for (tmp = dbin->blocked_pads; tmp; tmp = next) { ++ for (tmp = dbin->blocked_pads; tmp; tmp = tmp->next) { + GstDecodePad *dpad = (GstDecodePad *) tmp->data; + GstPad *opad = gst_ghost_pad_get_target (GST_GHOST_PAD_CAST (dpad)); + +- next = g_list_next (tmp); + if (!opad) + continue; + +@@ -2701,20 +2810,20 @@ gst_decode_bin_change_state (GstElement * element, GstStateChange transition) + goto missing_typefind; + break; + case GST_STATE_CHANGE_READY_TO_PAUSED: +- DECODE_BIN_DYN_LOCK (dbin); ++ DYN_LOCK (dbin); + GST_LOG_OBJECT (dbin, "clearing shutdown flag"); + dbin->shutdown = FALSE; +- DECODE_BIN_DYN_UNLOCK (dbin); ++ DYN_UNLOCK (dbin); + dbin->have_type = FALSE; + ret = GST_STATE_CHANGE_ASYNC; + do_async_start (dbin); + break; + case GST_STATE_CHANGE_PAUSED_TO_READY: +- DECODE_BIN_DYN_LOCK (dbin); ++ DYN_LOCK (dbin); + GST_LOG_OBJECT (dbin, "setting shutdown flag"); + dbin->shutdown = TRUE; + unblock_pads (dbin); +- DECODE_BIN_DYN_UNLOCK (dbin); ++ DYN_UNLOCK (dbin); + default: + break; + } +@@ -2733,11 +2842,12 @@ gst_decode_bin_change_state (GstElement * element, GstStateChange transition) + switch (transition) { + case GST_STATE_CHANGE_PAUSED_TO_READY: + do_async_done (dbin); +- gst_decode_bin_remove_groups (dbin); ++ if (dbin->decode_chain) { ++ gst_decode_chain_free (dbin->decode_chain); ++ dbin->decode_chain = NULL; ++ } + break; + case GST_STATE_CHANGE_READY_TO_NULL: +- gst_decode_bin_remove_groups (dbin); +- break; + default: + break; + } +-- +1.6.4.3 + --- gst-plugins-base0.10-0.10.25.orig/debian/patches/0002-decodebin2-Don-t-set-the-external-ghostpads-blocked-.patch +++ gst-plugins-base0.10-0.10.25/debian/patches/0002-decodebin2-Don-t-set-the-external-ghostpads-blocked-.patch @@ -0,0 +1,79 @@ +From a7fe6e683ae91caa9445d899964553a2610fba17 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Sat, 26 Sep 2009 12:10:21 +0200 +Subject: [PATCH 2/7] decodebin2: Don't set the external ghostpads blocked but only their targets + +Pad blocks should never be done on external pads as outside elements +might want to use their own pad blocks on them and this will lead to +conflicts and deadlocks. +--- + gst/playback/gstdecodebin2.c | 23 ++++++++++++++++++----- + 1 files changed, 18 insertions(+), 5 deletions(-) + +diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c +index 1ad7968..24e251b 100644 +--- a/gst/playback/gstdecodebin2.c ++++ b/gst/playback/gstdecodebin2.c +@@ -2484,7 +2484,7 @@ gst_decode_pad_init (GstDecodePad * pad) + } + + static void +-source_pad_blocked_cb (GstDecodePad * dpad, gboolean blocked, gpointer unused) ++source_pad_blocked_cb (GstPad * opad, gboolean blocked, GstDecodePad * dpad) + { + GstDecodeGroup *group; + GstDecodeBin *dbin; +@@ -2531,10 +2531,16 @@ static void + gst_decode_pad_set_blocked (GstDecodePad * dpad, gboolean blocked) + { + GstDecodeBin *dbin = dpad->dbin; ++ GstPad *opad; + + DECODE_BIN_DYN_LOCK (dbin); +- gst_pad_set_blocked_async (GST_PAD (dpad), blocked, +- (GstPadBlockCallback) source_pad_blocked_cb, NULL); ++ opad = gst_ghost_pad_get_target (GST_GHOST_PAD_CAST (dpad)); ++ if (!opad) ++ goto out; ++ ++ gst_pad_set_blocked_async_full (opad, blocked, ++ (GstPadBlockCallback) source_pad_blocked_cb, gst_object_ref (dpad), ++ (GDestroyNotify) gst_object_unref); + if (blocked) { + if (dbin->shutdown) { + /* deactivate to force flushing state to prevent NOT_LINKED errors */ +@@ -2548,6 +2554,8 @@ gst_decode_pad_set_blocked (GstDecodePad * dpad, gboolean blocked) + gst_object_unref (dpad); + dbin->blocked_pads = g_list_remove (dbin->blocked_pads, dpad); + } ++ gst_object_unref (opad); ++out: + DECODE_BIN_DYN_UNLOCK (dbin); + } + +@@ -2659,15 +2667,20 @@ unblock_pads (GstDecodeBin * dbin) + + for (tmp = dbin->blocked_pads; tmp; tmp = next) { + GstDecodePad *dpad = (GstDecodePad *) tmp->data; ++ GstPad *opad = gst_ghost_pad_get_target (GST_GHOST_PAD_CAST (dpad)); + + next = g_list_next (tmp); ++ if (!opad) ++ continue; + + GST_DEBUG_OBJECT (dpad, "unblocking"); +- gst_pad_set_blocked_async (GST_PAD (dpad), FALSE, +- (GstPadBlockCallback) source_pad_blocked_cb, NULL); ++ gst_pad_set_blocked_async_full (opad, FALSE, ++ (GstPadBlockCallback) source_pad_blocked_cb, gst_object_ref (dpad), ++ (GDestroyNotify) gst_object_unref); + /* make flushing, prevent NOT_LINKED */ + GST_PAD_SET_FLUSHING (GST_PAD (dpad)); + gst_object_unref (dpad); ++ gst_object_unref (opad); + GST_DEBUG_OBJECT (dpad, "unblocked"); + } + +-- +1.6.4.3 + --- gst-plugins-base0.10-0.10.25.orig/debian/patches/02_cddabasesrc-dont-set-track-on-device-set.patch +++ gst-plugins-base0.10-0.10.25/debian/patches/02_cddabasesrc-dont-set-track-on-device-set.patch @@ -0,0 +1,23 @@ +From acaeed6131539facc523862e0f418f8602c6b095 Mon Sep 17 00:00:00 2001 +From: Sebastian Dröge +Date: Mon, 09 Nov 2009 17:03:06 +0000 +Subject: cddabasesrc: Don't set the track to 1 every time a device is set + +Fixes bug #601104. +--- +diff --git a/gst-libs/gst/cdda/gstcddabasesrc.c b/gst-libs/gst/cdda/gstcddabasesrc.c +index 5353a5b..2d351f4 100644 +--- a/gst-libs/gst/cdda/gstcddabasesrc.c ++++ b/gst-libs/gst/cdda/gstcddabasesrc.c +@@ -320,8 +320,6 @@ gst_cdda_base_src_set_device (GstCddaBaseSrc * src, const gchar * device) + #ifdef __sun + } + #endif +- +- src->uri_track = 1; + } + + static void +-- +cgit v0.8.2 + --- gst-plugins-base0.10-0.10.25.orig/debian/patches/10_gnome-vfs-dav-url.patch +++ gst-plugins-base0.10-0.10.25/debian/patches/10_gnome-vfs-dav-url.patch @@ -0,0 +1,10 @@ +--- gst-plugins-base-0.10.8/ext/gnomevfs/toto.c 2006-06-23 21:59:55.757674000 +0200 ++++ gst-plugins-base-0.10.8/ext/gnomevfs/gstgnomevfsuri.c 2006-06-23 21:59:21.651542500 +0200 +@@ -42,6 +42,7 @@ + "sftp://localhost/bla", + "nfs://localhost/bla", + "ssh://localhost/bla", ++ "dav://localhost/bla", + "burn://" + }; + gchar **result; --- gst-plugins-base0.10-0.10.25.orig/debian/patches/0003-factorylist-Use-gst_caps_can_intersect-instead-of-_i.patch +++ gst-plugins-base0.10-0.10.25/debian/patches/0003-factorylist-Use-gst_caps_can_intersect-instead-of-_i.patch @@ -0,0 +1,50 @@ +From 10cb19bcda3082435d57518666076a69e51a1bba Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Thu, 24 Sep 2009 16:05:58 +0200 +Subject: [PATCH 3/7] factorylist: Use gst_caps_can_intersect() instead of _intersect() + +This is faster and results in less allocations. +--- + gst/playback/gstfactorylists.c | 9 +++------ + 1 files changed, 3 insertions(+), 6 deletions(-) + +diff --git a/gst/playback/gstfactorylists.c b/gst/playback/gstfactorylists.c +index 7099927..df1916f 100644 +--- a/gst/playback/gstfactorylists.c ++++ b/gst/playback/gstfactorylists.c +@@ -240,7 +240,6 @@ gst_factory_list_filter (GValueArray * array, const GstCaps * caps) + + /* we only care about the sink templates */ + if (templ->direction == GST_PAD_SINK) { +- GstCaps *intersect; + GstCaps *tmpl_caps; + + /* try to intersect the caps with the caps of the template */ +@@ -248,21 +247,19 @@ gst_factory_list_filter (GValueArray * array, const GstCaps * caps) + + /* FIXME, intersect is not the right method, we ideally want to check + * for a subset here */ +- intersect = gst_caps_intersect (caps, tmpl_caps); +- gst_caps_unref (tmpl_caps); + + /* check if the intersection is empty */ +- if (!gst_caps_is_empty (intersect)) { ++ if (gst_caps_can_intersect (caps, tmpl_caps)) { + /* non empty intersection, we can use this element */ + GValue resval = { 0, }; + g_value_init (&resval, G_TYPE_OBJECT); + g_value_set_object (&resval, factory); + g_value_array_append (result, &resval); + g_value_unset (&resval); +- gst_caps_unref (intersect); ++ gst_caps_unref (tmpl_caps); + break; + } +- gst_caps_unref (intersect); ++ gst_caps_unref (tmpl_caps); + } + } + } +-- +1.6.4.3 + --- gst-plugins-base0.10-0.10.25.orig/debian/patches/0007-decodebin2-Chains-with-an-exposed-endpad-are-complet.patch +++ gst-plugins-base0.10-0.10.25/debian/patches/0007-decodebin2-Chains-with-an-exposed-endpad-are-complet.patch @@ -0,0 +1,54 @@ +From 68cef57e9260265229d194f1309cdffd654c95b6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Sat, 26 Sep 2009 12:56:36 +0200 +Subject: [PATCH 7/7] decodebin2: Chains with an exposed endpad are complete too + +This allows partial group changes, i.e. demuxer2 in the example below +goes EOS but has a next group and audio2 stays the same. + + /-- >demuxer2---->video +demuxer--- \--->audio1 + \--->audio2 +--- + gst/playback/gstdecodebin2.c | 11 ++++++++--- + 1 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c +index 4fe62b4..60dbf57 100644 +--- a/gst/playback/gstdecodebin2.c ++++ b/gst/playback/gstdecodebin2.c +@@ -2191,7 +2191,7 @@ out: + * + * Returns TRUE if the chain is complete, this means either + * a) This chain is a dead end, i.e. we have no suitable plugins +- * b) This chain ends in an endpad and this is blocked ++ * b) This chain ends in an endpad and this is blocked or exposed + * + * Not MT-safe, always call with decodebin expose lock + */ +@@ -2200,7 +2200,12 @@ gst_decode_chain_is_complete (GstDecodeChain * chain) + { + gboolean complete = FALSE; + +- if (chain->deadend || (chain->endpad && chain->endpad->blocked)) { ++ if (chain->deadend) { ++ complete = TRUE; ++ goto out; ++ } ++ ++ if (chain->endpad && (chain->endpad->blocked || chain->endpad->exposed)) { + complete = TRUE; + goto out; + } +@@ -2543,7 +2548,7 @@ gst_decode_chain_expose (GstDecodeChain * chain, GList ** endpads) + return TRUE; + + if (chain->endpad) { +- if (!chain->endpad->blocked) ++ if (!chain->endpad->blocked && !chain->endpad->exposed) + return FALSE; + *endpads = g_list_prepend (*endpads, gst_object_ref (chain->endpad)); + return TRUE; +-- +1.6.4.3 +