--- gst-plugins-good0.10-0.10.23.orig/debian/maint +++ gst-plugins-good0.10-0.10.23/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-good0.10-0.10.23.orig/debian/gstreamer-plugins-good.install +++ gst-plugins-good0.10-0.10.23/debian/gstreamer-plugins-good.install @@ -0,0 +1,73 @@ +debian/tmp/etc/gconf/schemas/gstreamer-@GST_ABI@.schemas +debian/tmp/usr/share/gstreamer-0.10/presets/ +@1394@ +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstaasink.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstalaw.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstalphacolor.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstalpha.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstannodex.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstapetag.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstaudiofx.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstauparse.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstautoconvert.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstautodetect.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstavi.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstcacasink.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstcairo.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstcutter.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstdebug.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstdeinterlace.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstdtmf.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstdv.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstefence.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgsteffectv.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstequalizer.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstflac.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstflv.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstflxdec.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstgconfelements.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstgdkpixbuf.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstgoom.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstgoom2k1.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgsticydemux.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstid3demux.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstimagefreeze.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstinterleave.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstjpeg.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstlevel.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstliveadder.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstmatroska.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstmonoscope.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstmulaw.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstmultifile.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstmultipart.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstnavigationtest.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstossaudio.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstoss4audio.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstpng.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstqtdemux.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstreplaygain.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstrtp.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstrtpmanager.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstrtpmux.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstrtsp.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstshapewipe.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstshout2.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstsmpte.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstsouphttpsrc.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstspectrum.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstspeex.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgsttaglib.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstudp.so +@video4linux2@ +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstvalve.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstvideobox.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstvideocrop.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstvideofilter.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstvideomixer.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstwavenc.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstwavpack.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstwavparse.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstximagesrc.so +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgsty4menc.so +debian/tmp/usr/share/locale --- gst-plugins-good0.10-0.10.23.orig/debian/copyright +++ gst-plugins-good0.10-0.10.23/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-good0.10-0.10.23.orig/debian/watch +++ gst-plugins-good0.10-0.10.23/debian/watch @@ -0,0 +1,2 @@ +version=2 +http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-(0\.10\..*)\.tar\.gz --- gst-plugins-good0.10-0.10.23.orig/debian/control +++ gst-plugins-good0.10-0.10.23/debian/control @@ -0,0 +1,125 @@ +Source: gst-plugins-good0.10 +Section: libs +Priority: optional +Maintainer: Ubuntu Desktop Team +XSBC-Original-Maintainer: Maintainers of GStreamer packages +Uploaders: Loic Minier , + Sebastian Dröge , + Sjoerd Simons +Build-Depends: libgstreamer0.10-dev (>= 0.10.29), libraw1394-dev (>= 1.2.1) [alpha amd64 arm armeb armel avr32 hppa i386 ia64 lpia m32r m68k mips mipsel powerpc ppc64 s390 s390x sh3 sh3eb sh4 sh4eb sparc] , libiec61883-dev (>= 1.0.0) [alpha amd64 arm armeb armel avr32 hppa i386 ia64 lpia m32r m68k mips mipsel powerpc ppc64 s390 s390x sh3 sh3eb sh4 sh4eb sparc] , libavc1394-dev [alpha amd64 arm armeb armel avr32 hppa i386 ia64 lpia m32r m68k mips mipsel powerpc ppc64 s390 s390x sh3 sh3eb sh4 sh4eb sparc] , libv4l-dev [alpha amd64 arm armeb armel avr32 hppa i386 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 ia64 lpia m32r m68k mips mipsel powerpc ppc64 s390 s390x sh3 sh3eb sh4 sh4eb sparc], libgstreamer-plugins-base0.10-dev (>= 0.10.29), autotools-dev, cdbs (>= 0.4.20), type-handling (>= 0.2.14), debhelper (>= 5), pkg-config (>= 0.11.0), gtk-doc-tools, gconf2, libglib2.0-dev (>= 2.18), liboil0.3-dev (>= 0.3.8), libcairo2-dev, libcaca-dev, libspeex-dev (>= 1.1.6), libpng12-dev, libshout3-dev, libjpeg62-dev (>= 6b), libaa1-dev (>= 1.4p5), libesd0-dev (>= 0.2.28), libflac-dev (>= 1.1.4), libdv4-dev | libdv-dev, libgconf2-dev, libxdamage-dev, libxext-dev, libxfixes-dev, libxv-dev, libxml2-dev, libgtk2.0-dev (>= 2.8), libtag1-dev (>= 1.5), libwavpack-dev (>= 4.20), gstreamer-tools (>= 0.10.14), lsb-release, gstreamer0.10-plugins-base (>= 0.10.29), libsoup-gnome2.4-dev (>= 2.26), libpulse-dev (>= 0.9.20), libbz2-dev, gstreamer0.10-doc, gstreamer0.10-plugins-base-doc +Standards-Version: 3.8.4 + +Package: gstreamer0.10-plugins-good-doc +Architecture: all +Section: doc +Depends: gstreamer0.10-doc, + gstreamer0.10-plugins-base-doc, + ${misc:Depends} +Description: GStreamer documentation for plugins from the "good" 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 documentation for plugins from the "good" set, + a set of good-quality plug-ins under the LGPL license. + +Package: gstreamer0.10-esd +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends} +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 ESD + 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 ESD (ESounD), the + Enlightened Sound Daemon. + +Package: gstreamer0.10-pulseaudio +Architecture: any +Section: sound +Depends: ${misc:Depends}, + ${shlibs:Depends} +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 PulseAudio + 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 PulseAudio, a sound server + for POSIX and WIN32 systems. + +Package: gstreamer0.10-plugins-good +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends}, + gstreamer0.10-audiosink, + gstreamer0.10-plugins-base +Recommends: gstreamer0.10-x +Replaces: gstreamer0.10-plugins-bad (<< 0.10.18.2), gstreamer0.10-plugins-really-bad (<< 0.10.18.2), gstreamer0.10-plugins-good-doc (<< 0.10.6-2) +Conflicts: gstreamer0.10-plugins-bad (<< 0.10.18.2), gstreamer0.10-plugins-really-bad (<< 0.10.18.2) +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 "good" 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 "good" set, a set + of good-quality plug-ins under the LGPL license. + +Package: gstreamer0.10-plugins-good-dbg +Architecture: any +Section: debug +Priority: extra +Depends: gstreamer0.10-plugins-good (= ${binary:Version}), + gstreamer0.10-pulseaudio (= ${binary:Version}), + gstreamer0.10-esd (= ${binary:Version}), + ${misc:Depends} +Replaces: gstreamer0.10-plugins-bad-dbg (<< 0.10.18.2) +Conflicts: gstreamer0.10-plugins-bad-dbg (<< 0.10.18.2) +Description: GStreamer plugins from the "good" 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. + --- gst-plugins-good0.10-0.10.23.orig/debian/rules +++ gst-plugins-good0.10-0.10.23/debian/rules @@ -0,0 +1,178 @@ +#!/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 + +CFLAGS += -Wno-error +CXXFLAGS += -Wno-error +LDFLAGS += -Wl,-z,defs -Wl,-O1 -Wl,--as-needed +DEB_MAKE_CHECK_TARGET = check || true + +# this is for compatibility with dpkg-dev < 1.13.5, see +# +DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null) +DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null) + +# Take account of old dpkg-architecture output. +ifeq ($(DEB_HOST_ARCH_CPU),) + DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU) + ifeq ($(DEB_HOST_ARCH_CPU),x86_64) + DEB_HOST_ARCH_CPU := amd64 + endif +endif +ifeq ($(DEB_HOST_ARCH_OS),) + DEB_HOST_ARCH_OS := $(subst -gnu,,$(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM)) + ifeq ($(DEB_HOST_ARCH_OS),gnu) + DEB_HOST_ARCH_OS := hurd + endif +endif +# end of compatibility block + +# debian package version +version=$(shell dpkg-parsechangelog | grep ^Version: | cut -d ' ' -f 2) +# upstream version +gst_version=$(shell echo $(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.29) + +gst_pkgname=gstreamer$(gst_abi) +gst_deb_abi=$(gst_abi)-0 + +gst_extra_build_depends = +gst_extra_build_depends += libraw1394-dev (>= 1.2.1) [@linux@] +gst_extra_build_depends += , libiec61883-dev (>= 1.0.0) [@linux@] +gst_extra_build_depends += , libavc1394-dev [@linux@] +gst_extra_build_depends += , libv4l-dev [@linux@] +gst_extra_build_depends += , libgudev-1.0-dev (>= 143) [@linux@] + +# debug package +DEB_DH_STRIP_ARGS := --dbg-package=$(gst_pkgname)-plugins-good-dbg + +# 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 += esd pulseaudio plugins-good +ifeq ($(DEB_HOST_ARCH_OS),linux) +PLUGINS += +endif +VERSIONIZE= \ + plugins-good-doc.install \ + +ifeq ($(DEB_HOST_ARCH_OS),linux) +1394 = debian/tmp/usr/lib/gstreamer-$(gst_abi)/libgst1394.so +video4linux2 = debian/tmp/usr/lib/gstreamer-$(gst_abi)/libgstvideo4linux2.so +endif + +ifeq ($(DEB_HOST_ARCH_OS),linux) +DEFAULT_AUDIOSINK = autoaudiosink +DEFAULT_AUDIOSRC = autoaudiosrc +DEFAULT_VIDEOSINK = autovideosink +DEFAULT_VIDEOSRC = v4l2src +DEFAULT_VISUALIZER = goom +else +DEFAULT_AUDIOSINK = autoaudiosink +DEFAULT_AUDIOSRC = pulsesrc +DEFAULT_VIDEOSINK = autovideosink +DEFAULT_VIDEOSRC = videotestsrc +DEFAULT_VISUALIZER = goom +endif + +# Let's decide the package name and url depending on the distribution +DISTRO = "$(shell lsb_release -si)" + +GST_PACKAGE_NAME := "GStreamer Good Plugins (unknown Debian derivative)" +GST_PACKAGE_ORIGIN="http://packages.qa.debian.org/gst-plugins-good$(gst_abi)" + +ifeq ($(DISTRO),"Debian") +GST_PACKAGE_NAME := "GStreamer Good Plugins (Debian)" +GST_PACKAGE_ORIGIN="http://packages.qa.debian.org/gst-plugins-good$(gst_abi)" +endif + +ifeq ($(DISTRO),"Ubuntu") +GST_PACKAGE_NAME := "GStreamer Good Plugins (Ubuntu)" +GST_PACKAGE_ORIGIN="https://launchpad.net/distros/ubuntu/+source/gst-plugins-good$(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,@1394@,$(1394),g" \ + | sed "s,@video4linux2@,$(video4linux2),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 + +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 + 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_EXTRA_BUILD_DEPENDS@/$(gst_extra_build_depends)/g" | \ + sed "s/@linux@/`type-handling any linux-gnu`/g"> $@ + +DEB_CONFIGURE_EXTRA_FLAGS += \ + --disable-examples \ + --enable-DEBUG \ + --enable-debug \ + --with-package-name=$(GST_PACKAGE_NAME) \ + --with-package-origin=$(GST_PACKAGE_ORIGIN) \ + --enable-gtk-doc \ + --enable-experimental \ + --with-default-audiosink=$(DEFAULT_AUDIOSINK) \ + --with-default-audiosrc=$(DEFAULT_AUDIOSRC) \ + --with-default-videosink=$(DEFAULT_VIDEOSINK) \ + --with-default-videosrc=$(DEFAULT_VIDEOSRC) \ + --with-default-visualizer=$(DEFAULT_VISUALIZER) + +clean:: + # get rid of the sym links + 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 + +common-binary-fixup-arch:: + dh_gstscancodecs + +DEB_INSTALL_DOCS_ALL += debian/README.Debian NEWS + +# Disable inclusion of large upstream ChangeLog +DEB_INSTALL_CHANGELOGS_ALL := + +.PHONY: maint --- gst-plugins-good0.10-0.10.23.orig/debian/HACKING.Debian +++ gst-plugins-good0.10-0.10.23/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-good0.10-0.10.23.orig/debian/changelog +++ gst-plugins-good0.10-0.10.23/debian/changelog @@ -0,0 +1,2201 @@ +gst-plugins-good0.10 (0.10.23-1ubuntu1) maverick; urgency=low + + * Resync on Debian + * debian/gstreamer-plugins-good.install, + debian/patches/04_move_farsight_plugins_to_good.patch, + debian/patches/99_autoreconf.patch: + - install the farsight plugins with good until upstream does the change + * debian/rules: + - set the audiosrc default to pulsesrc + + -- Sebastien Bacher Mon, 31 May 2010 17:21:13 +0200 + +gst-plugins-good0.10 (0.10.23-1) unstable; urgency=low + + * New upstream release, "Stylish Kids in Riot". + + -- Sebastian Dröge Mon, 31 May 2010 05:42:46 +0200 + +gst-plugins-good0.10 (0.10.22.3-1) unstable; urgency=low + + * New upstream pre-release: + + debian/patches/*: + - Drop all VP8/WebM patches and other patches that + are upstream now. + + -- Sebastian Dröge Wed, 26 May 2010 15:34:01 +0200 + +gst-plugins-good0.10 (0.10.22.2-3) unstable; urgency=low + + * Upload to unstable. + + -- Sebastian Dröge Thu, 20 May 2010 13:55:29 +0200 + +gst-plugins-good0.10 (0.10.22.2-2) experimental; urgency=low + + * debian/patches/00*: + + Add support for VP8 in the AVI, Matroska and QT/MP4 plugins + and fix some Matroska issues. + * debian/patches/04-pulse-0001-pulse-Don-t-lock-the-mainloop-in-NULL.patch: + + Don't try to use a NULL pulse mainloop. + + -- Sebastian Dröge Tue, 18 May 2010 20:59:55 +0200 + +gst-plugins-good0.10 (0.10.22.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/gstreamer-plugins-good.install, + debian/control.in: + - Ship the imagefreeze and oss4audio plugins here, they were + moved from gstreamer0.10-plugins-bad. + - Add conflicts for gstreamer0.10-plugins-bad because of the + moved capssetter element. + * debian/patches/01_efence-configure-check.patch: + + Fix configure check for efence. + + -- Sebastian Dröge Sat, 15 May 2010 09:55:08 +0200 + +gst-plugins-good0.10 (0.10.22-1) unstable; urgency=low + + * New upstream release, "Square One": + + debian/build-deps.in, + debian/rules: + - Build depend on GStreamer core/base >= 0.10.29. + + -- Sebastian Dröge Wed, 28 Apr 2010 09:44:17 +0200 + +gst-plugins-good0.10 (0.10.21.3-1) experimental; urgency=low + + * New upstream pre-release. + + -- Sebastian Dröge Mon, 26 Apr 2010 08:01:09 +0200 + +gst-plugins-good0.10 (0.10.21.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/build-deps.in, + debian/rules: + - Build depend on GStreamer core/base >= 0.10.28.2. + * debian/build-deps.in, + debian/control.in: + + (Build-) depend on GStreamer core/base documentation to get + documentation cross references right. + + -- Sebastian Dröge Thu, 15 Apr 2010 13:56:53 +0200 + +gst-plugins-good0.10 (0.10.21-1) unstable; urgency=low + + * New upstream stable release, "Lemons". + + -- Sebastian Dröge Tue, 09 Mar 2010 09:48:28 +0000 + +gst-plugins-good0.10 (0.10.19-1) unstable; urgency=low + + * New upstream stable release, "Closer to the Edit": + + debian/rules, + debian/build-deps.in: + - Build depend on gstreamer and gst-plugins-base >= 0.10.27. + + -- Sebastian Dröge Mon, 08 Mar 2010 10:01:27 +0000 + +gst-plugins-good0.10 (0.10.18.3-1) experimental; urgency=low + + * New upstream pre-release: + + debian/rules, + debian/build-deps.in: + - Build depend on gstreamer and gst-plugins-base >= 0.10.26.3. + + -- Sebastian Dröge Thu, 25 Feb 2010 08:27:57 +0100 + +gst-plugins-good0.10 (0.10.18.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/gstreamer-plugins-good.install, + debian/control.in: + - Add shapewipe plugin, which moved from gst-plugins-bad. Also + add Replaces for gst-plugins-bad << 0.10.17.2. + + debian/build-deps.in: + - Build depend on gst-plugins-base 0.10.26.2. + + -- Sebastian Dröge Fri, 19 Feb 2010 13:51:58 +0100 + +gst-plugins-good0.10 (0.10.18-1) unstable; urgency=low + + * New upstream release, "Short Circuit": + + debian/rules, + debian/build-deps.in: + - Update GStreamer and gst-plugins-base build dependencies to >= 0.10.26. + + -- Sebastian Dröge Thu, 11 Feb 2010 10:31:48 +0100 + +gst-plugins-good0.10 (0.10.17.3-1) experimental; urgency=low + + * debian/build-deps.in, + debian/gstreamer-plugins-good.install: + + Remove HAL plugin, HAL will most probably be dropped soon and + nobody uses this plugin anymore. + * New upstream pre-release. + + -- Sebastian Dröge Fri, 05 Feb 2010 10:10:51 +0100 + +gst-plugins-good0.10 (0.10.17.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/rules, + debian/control.in: + - Build depend on GStreamer 0.10.25.2, gst-plugins-base 0.10.25.2 + and GLib 2.18. + + Fixes demuxing of some MOV files (Closes: #561227). + + Fixes FTBFS with gcc 4.5 (Closes: #564998). + * debian/control.in: + + Fix typo in package description (Closes: #557368). + + Remove David I. Lehn from Uploaders (Closes: #557285). + + -- Sebastian Dröge Wed, 27 Jan 2010 07:56:17 +0100 + +gst-plugins-good0.10 (0.10.17-1) unstable; urgency=low + + * debian/build-deps.in: + + Build depend on pulseaudio >= 0.9.20 for additional + features. + * New upstream release, "They used to sparkle". + + -- Sebastian Dröge Tue, 17 Nov 2009 09:17:35 +0100 + +gst-plugins-good0.10 (0.10.16.3-1) experimental; urgency=low + + * New upstream pre-release. + + -- Sebastian Dröge Fri, 13 Nov 2009 07:58:08 +0100 + +gst-plugins-good0.10 (0.10.16.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/patches/00*pulse*.patch, + debian/patches/00*equalizer*.patch, + debian/patches/04_oss-rank.patch: + - Dropped, merged upstream. + + debian/build-deps.in, + debian/rules: + - Update build dependencies. + + -- Sebastian Dröge Tue, 10 Nov 2009 10:28:49 +0100 + +gst-plugins-good0.10 (0.10.16-5) unstable; urgency=low + + * debian/patches/0021-pulsesink-Only-set-the-volume-on-stream-connection-i.patch: + + Only set the volume on stream connection if pulse >= 0.9.20 is available, + this prevents weird volume changes in totem. + + -- Sebastian Dröge Fri, 30 Oct 2009 10:33:31 +0100 + +gst-plugins-good0.10 (0.10.16-4) unstable; urgency=low + + * debian/patches/000{1,2}-equalizer*.patch: + + Patches from upstream GIT to fix equalizer in stereo mode and + to use better filters for the first and last band. + * debian/patches/00[1-20]-pulse*.patch: + + Patches from upstream GIT to improve PulseAudio plugin and fix + some major issues, like decreasing the volume after every track + in some cases. + + -- Sebastian Dröge Sun, 18 Oct 2009 14:00:56 +0200 + +gst-plugins-good0.10 (0.10.16-3) unstable; urgency=low + + * debian/patches/04_oss-rank.patch: + + Downgrade the rank of osssrc to secondary + * debian/rules: Change default audio input to autoaudiosrc + + -- Sjoerd Simons Wed, 07 Oct 2009 22:33:02 +0100 + +gst-plugins-good0.10 (0.10.16-2) unstable; urgency=low + + * debian/rules: + + Use libgudev on Linux for v4l2 device detection. + + -- Sebastian Dröge Wed, 30 Sep 2009 08:26:07 +0200 + +gst-plugins-good0.10 (0.10.16-1) unstable; urgency=low + + * New upstream release, 'Secret Handshakes'. + + -- Sebastian Dröge Sun, 30 Aug 2009 11:02:26 +0200 + +gst-plugins-good0.10 (0.10.15.5-1) experimental; urgency=low + + * New upstream pre-release. + * debian/control.in: + + Update Standards-version to 3.8.3, no additional changes needed. + + -- Sebastian Dröge Wed, 26 Aug 2009 17:39:36 +0200 + +gst-plugins-good0.10 (0.10.15.3-1) experimental; urgency=low + + * New upstream pre-release. + + -- Sebastian Dröge Mon, 17 Aug 2009 08:11:59 +0200 + +gst-plugins-good0.10 (0.10.15.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/build-deps.in, + debian/rules: + - Update build dependencies. + + debian/control.in, + debian/gstreamer-plugins-good.install: + - Add the rtpmanager plugin which was moved from gst-plugins-bad. + For this also add Replaces for gst-plugins-bad << 0.10.13.2. + + debian/patches/01_equalizer-integer-arithmetic-distortions.patch, + debian/patches/02_SA35205-pngdec-integer-overflow.patch: + - Dropped, merged upstream. + * debian/control.in: + + Update Standards-version to 3.8.2, no additional changes needed. + + -- Sebastian Dröge Wed, 12 Aug 2009 07:13:08 +0200 + +gst-plugins-good0.10 (0.10.15-2) unstable; urgency=high + + * debian/patches/01_equalizer-integer-arithmetic-distortions.patch: + + Patch from upstream GIT to fix distortions when the integer + arithmetic mode of the equalizer is used. + * debian/patches/02_SA35205-pngdec-integer-overflow.patch: + + SECURITY: SA35205 - PNG Processing Integer Overflow Vulnerability + Patch from upstream GIT to fix an integer overflow in pngdec: + A malformed (or simply huge) PNG file can lead to integer overflow in + calculating the size of the output buffer, leading to crashes or buffer + overflows later (Closes: #531631). + + -- Sebastian Dröge Wed, 03 Jun 2009 08:22:36 +0200 + +gst-plugins-good0.10 (0.10.15-1) unstable; urgency=low + + * New upstream release, 'I've been up all night'. + + -- Sebastian Dröge Wed, 20 May 2009 23:19:36 +0200 + +gst-plugins-good0.10 (0.10.14.3-1) experimental; urgency=low + + * New upstream pre-release: + + Fixes regression in AVI seeking (Closes: #528813). + + debian/patches/01_rtp-libm-linking.patch: + - Dropped, merged upstream. + + debian/gstreamer-plugins-good.install, + debian/control.in: + - Add the flv, deinterlace and y4menc plugins that + were moved from gst-plugins-bad. + * debian/control.in: + + Change section of the debug package to debug and add ${misc:Depends} + to it's dependencies. + + -- Sebastian Dröge Sat, 16 May 2009 11:28:14 +0200 + +gst-plugins-good0.10 (0.10.14.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/patches/01_gconf-notifications.patch: + - Dropped, merged upstream. + + debian/rules, + debian/build-deps.in: + - Updated build dependencies. + + debian/patches/01_rtp-libm-linking.patch: + - Link with -lm to fix unresolved symbols. + * debian/control.in: + + Update Standards-version to 3.8.1, no additional changes needed. + + -- Sebastian Dröge Tue, 12 May 2009 08:59:05 +0200 + +gst-plugins-good0.10 (0.10.14-2) unstable; urgency=low + + * Upload to unstable. + + -- Sebastian Dröge Fri, 06 Mar 2009 23:41:50 +0100 + +gst-plugins-good0.10 (0.10.14-1) experimental; urgency=low + + * New upstream release, 'Disaffected Affectation'. + * debian/patches/02_no-Werror.patch, + debian/rules: + + Pass -Wno-error via C(XX)FLAGS instead of patching configure. + * debian/patches/01_gconf-notifications.patch: + + Disconnect GConf notifications after usage, patch from upstream GIT. + + -- Sebastian Dröge Fri, 20 Feb 2009 10:31:38 +0100 + +gst-plugins-good0.10 (0.10.13.3-1) experimental; urgency=low + + * debian/build-deps.in: + + Build depend on gstreamer0.10-plugins-base 0.10.22 for the + new videotestsrc colors to fix the videocrop unit test. + * debian/gstreamer-plugins-good.install: + + Include the new equalizer presets. + * New upstream pre-release. + + -- Sebastian Dröge Mon, 16 Feb 2009 15:30:35 +0100 + +gst-plugins-good0.10 (0.10.13.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/patches/04_equalizer-coefficients.patch, + debian/patches/05_soup-live-source.patch, + debian/patches/06_libv4l.patch, + debian/patches/07_pulse-hang-and-thread-leak.patch, + debian/patches/99_autoreconf.patch: + - Dropped, merged upstream. + + debian/rules, + debian/build-deps.in: + - Build depend on gstreamer and gst-plugins-base 0.10.22. + - Build depend on pulseaudio 0.9.13 to enable some optional + features in the pulse plugin. + + -- Sebastian Dröge Sat, 07 Feb 2009 20:36:03 +0100 + +gst-plugins-good0.10 (0.10.13-2) experimental; urgency=low + + * debian/patches/07_pulse-hang-and-thread-leak.patch: + + Patches from upstream GIT to fix some deadlocks when + the pulseaudio daemon disappears and also fix + a memory leak. + + -- Sebastian Dröge Mon, 26 Jan 2009 15:41:46 +0100 + +gst-plugins-good0.10 (0.10.13-1) experimental; urgency=low + + * New upstream security release, 'Blatant Discouragement': + + Fix potential buffer overflows while reading quicktime headers. + Security issue noticed by Tobias Klein (TKADV2009-0xx). + + debian/patches/99_autoreconf.patch: + - Updated for the new release. + * debian/build-deps.in: + + Build depend on libcairo2-dev instead of the virtual package + libcairo-dev. + * - + + -- Sebastian Dröge Mon, 26 Jan 2009 15:41:45 +0100 + +gst-plugins-good0.10 (0.10.11-2) experimental; urgency=low + + * debian/patches/06_libv4l.patch, + debian/patches/99_autoreconf.patch, + debian/rules: + + Patch from upstream CVS to use libv4l for the v4l2 plugin instead + of direct access to the v4l device. This adds support for a lot + more v4l2 devices. + + -- Sebastian Dröge Wed, 05 Nov 2008 12:38:36 +0100 + +gst-plugins-good0.10 (0.10.11-1) experimental; urgency=low + + * New upstream release, 'Secondary Consideration'. + + -- Sebastian Dröge Sat, 25 Oct 2008 09:39:23 +0200 + +gst-plugins-good0.10 (0.10.10.4-1) experimental; urgency=low + + [ Loic Minier ] + * Set gstreamer0.10-pulseaudio's Section to sound to match overrides. + + [ Sebastian Dröge ] + * New upstream pre-release. + * debian/patches/04_equalizer-coefficients.patch: + + Patch from upstream bugtracker to not recalculate the equalizer + coefficients for every single buffer but only when it's needed. + * debian/patches/05_soup-live-source.patch: + + Patch from upstream bugtracker to allow souphttpsrc to work + as live source and have it provide timestamps. + + -- Sebastian Dröge Wed, 22 Oct 2008 11:08:03 +0200 + +gst-plugins-good0.10 (0.10.10.3-1) experimental; urgency=low + + * New upstream pre-release. + + -- Sebastian Dröge Sat, 18 Oct 2008 10:23:40 +0200 + +gst-plugins-good0.10 (0.10.10.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/rules, + debian/build-deps.in: + - Build depend on gstreamer and gst-plugins-base >= 0.10.21. + + debian/build-deps.in: + - Build depend on FLAC >= 1.1.3. + - Build depend on bzip2. + + -- Sebastian Dröge Sat, 11 Oct 2008 15:42:49 +0200 + +gst-plugins-good0.10 (0.10.10-1) experimental; urgency=low + + * New upstream release, 'Barely Moving'. + + -- Sebastian Dröge Thu, 28 Aug 2008 10:29:42 +0200 + +gst-plugins-good0.10 (0.10.9.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/build-deps.in, + debian/gstreamer-plugins-good.install: + - Remove the cdio plugin, it moved to gst-plugins-ugly because libcdio + is GPL licensed. + * debian/rules: + + Build depend on gstreamer >= 0.10.20-3 for the new virtual package + names. + * debian/control.in: + + Wrap control fields. + + Depend on gstreamer0.10-plugins-base as some plugins need it. + + -- Sebastian Dröge Fri, 15 Aug 2008 09:28:10 +0200 + +gst-plugins-good0.10 (0.10.9-2) experimental; urgency=low + + * debian/control.in, + debian/rules: + + Use new automatic codec installation infrastructure. + + -- Sebastian Dröge Sat, 09 Aug 2008 16:56:46 +0200 + +gst-plugins-good0.10 (0.10.9-1) experimental; urgency=low + + * New upstream release, 'Steam Train Rolling'. + + -- Sebastian Dröge Fri, 01 Aug 2008 11:32:53 +0200 + +gst-plugins-good0.10 (0.10.8.4-1) experimental; urgency=low + + * New upstream pre-release. + + -- Sebastian Dröge Tue, 29 Jul 2008 12:01:45 +0200 + +gst-plugins-good0.10 (0.10.8.3-1) experimental; urgency=low + + * New upstream pre-release. + + -- Sebastian Dröge Sat, 26 Jul 2008 12:34:57 +0200 + +gst-plugins-good0.10 (0.10.8.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/patches/10_speex_caps.patch, + debian/patches/11_rtsp_fdleak.patch, + debian/patches/12_matroskamux_track_duration.patch, + debian/patches/13_equalizer.patch: + - Dropped, merged upstream. + + debian/build-deps.in, + debian/control.in, + debian/gstreamer-pulseaudio.install, + debian/rules: + - Add the pulseaudio plugin. + + debian/gstreamer-plugins-good.install, + debian/control.in: + - Add the interleave and replaygain plugins. + + debian/build-deps.in, + debian/rules: + - Update gstreamer, gst-plugins-base and libcdio build dependencies. + * debian/control.in: + + Depend on gstreamer0.10-audiosink instead of a specific audiosink + plugin (Closes: #482796). + * debian/patches/03_pulse-rank.patch: + + Update the rank of the pulse elements to PRIMARY+10. + * debian/control.in: + + Update Standards-version to 3.8.0, no additional changes needed. + + -- Sebastian Dröge Sun, 20 Jul 2008 11:59:00 +0200 + +gst-plugins-good0.10 (0.10.8-4) unstable; urgency=low + + * debian/patches/13_equalizer.patch: + + Fix clipping in integer mode, correctly implement passthrough mode if + all bands have a gain of 0dB and delay filter coefficient calculation + until they're really needed. Patch from upstream CVS. + + -- Sebastian Dröge Mon, 02 Jun 2008 13:44:41 +0200 + +gst-plugins-good0.10 (0.10.8-3) unstable; urgency=low + + * debian/patches/11_rtsp_fdleak.patch + - Added. Fix filedescriptor leak on errors. (From upstream CVS) + * debian/patches/12_matroskamux_track_duration.patch + - Added. Fix track time calculation when muxing matroska files (From + upstream CVS) + + -- Sjoerd Simons Sun, 01 Jun 2008 16:15:48 +0200 + +gst-plugins-good0.10 (0.10.8-2) unstable; urgency=low + + * debian/patches/10_speex_caps.patch + - Added. Fix speexenc and rtpspeexpay caps negotiation (From gnome + bugzilla #465146) + + -- Sjoerd Simons Fri, 25 Apr 2008 21:51:20 +0200 + +gst-plugins-good0.10 (0.10.8-1) unstable; urgency=low + + * New upstream bugfix release, 'One For The Money'. + + -- Sebastian Dröge Thu, 24 Apr 2008 07:41:30 +0200 + +gst-plugins-good0.10 (0.10.7.4-1) experimental; urgency=low + + * New upstream pre-release. + + -- Sebastian Dröge Tue, 22 Apr 2008 10:28:29 +0200 + +gst-plugins-good0.10 (0.10.7.3-1) experimental; urgency=low + + * New upstream pre-release: + + debian/patches/01_goom-missing-header.patch: + - Dropped, merged upstream. + + debian/build-deps.in: + - flex and bison are not necessary anymore. + + -- Sebastian Dröge Fri, 18 Apr 2008 10:35:19 +0200 + +gst-plugins-good0.10 (0.10.7.2-2) experimental; urgency=low + + * debian/patches/02_no-Werror.patch: + + Don't build with -Werror to fix FTBFS on some architectures. + + -- Sebastian Dröge Tue, 15 Apr 2008 05:29:28 +0200 + +gst-plugins-good0.10 (0.10.7.2-1) experimental; urgency=low + + * New upstream pre-release: + + debian/control.in: + - Adjust conflicts for gst-plugins-bad because of moved plugins. + + debian/rules, + debian/build-deps.in: + - Update build dependencies. + + debian/gstreamer-plugins-good.install: + - Ship soup and goom2k1 plugins. + + debian/rules: + - Set default audio/video sinks/srcs depending on the platform. + + debian/patches/02_v4l2_default.patch, + debian/patches/05_speexenc_double_unref.patch, + debian/patches/75_build_docs_without_python_xml.patch, + debian/patches/80_unit-tests.patch: + - Dropped, merged upstream. + + debian/patches/01_goom-missing-header.patch: + - Add missing header file that was forgotten. + + -- Sebastian Dröge Mon, 14 Apr 2008 10:59:00 +0200 + +gst-plugins-good0.10 (0.10.7-3) unstable; urgency=low + + * debian/patches/05_speexenc_double_unref.patch: + + Added. Don't unref a buffer twice when hitting a not-negotiated error + in speexenc (from upstream CVS) (Closes: #472096) + + -- Sjoerd Simons Sat, 22 Mar 2008 02:35:15 +0100 + +gst-plugins-good0.10 (0.10.7-2) unstable; urgency=low + + * debian/patches/02_v4l2_default.patch: + + Patch by Mario Limonciello to use v4l2 as default video source instead + of the nowadays deprecated v4l (Closes: #468073). + * debian/patches/75_build_docs_without_python_xml.patch, + debian/build-deps.in: + Stop using pyxml for building the docs (Closes: #468630). + + -- Sebastian Dröge Tue, 11 Mar 2008 05:14:10 +0100 + +gst-plugins-good0.10 (0.10.7-1) unstable; urgency=low + + * New upstream release, "Red Door Black": + + debian/patches/01_linking-fixes.patch: + - Dropped, merged upstream. + + -- Sebastian Dröge Thu, 21 Feb 2008 10:48:23 +0100 + +gst-plugins-good0.10 (0.10.6.4-1) experimental; urgency=low + + * New upstream pre-release. + * 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. + * debian/patches/01_linking-fixes.patch: + + Link gstalpha with libgstbase. + * debian/build-deps.in: + + Build depend on libxv-dev to get Xv support in ximagsink. + + -- Sebastian Dröge Tue, 19 Feb 2008 06:54:55 +0100 + +gst-plugins-good0.10 (0.10.6.3-1) experimental; urgency=low + + * New upstream pre-release. + * debian/build-deps.in: + + Build depend on gstreamer0.10-plugins-base for the unit tests. + * debian/patches/80_unit-tests.patch: + + Disable gconfaudiosrc for the generic/states unit test. + + -- Sebastian Dröge Thu, 14 Feb 2008 13:14:55 +0100 + +gst-plugins-good0.10 (0.10.6.2-1) experimental; urgency=low + + [ Loic Minier ] + * Bump up type-handling build-dep to >= 0.2.14 and call it with two + arguments again. + + [ 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 ] + * New upstream pre-release: + + Fixes FTBFS if built twice in a row (Closes: #424398). + + Fixes playback of realaudio streams (Closes: #430364). + + Fixes switching of sink after song changes (Closes: #444769). + + debian/gstreamer-plugins-good.install: + - Add new equalizer, spectrum and multifile plugins and sort + alphabetically. + + debian/build-deps.in, + debian/rules: + - Update liboil and gstreamer build dependencies. + + debian/patches/20_gconf-state-change.patch, + debian/patches/30_id3_gst_tag_defines.patch: + - Dropped, merged upstream. + + debian/control.in: + - Update Replaces on gst-plugins-bad for the plugin moves. + - Update Standards-Version to 3.7.3, no additional changes needed. + * debian/rules: + + Run the unit test suite but don't fail the build on failures. + + -- Sebastian Dröge Sat, 09 Feb 2008 12:11:21 +0100 + +gst-plugins-good0.10 (0.10.6-4) unstable; urgency=low + + * debian/patches/30_id3_gst_tag_defines.patch: + + Added. Use GST_TAG_ARTIST_SORTNAME instead of the deprecated + GST_TAG_MUSICBRAINZ_SORTNAME (Closes: #452671) + + Also add support for GST_TAG_ALBUM_SORTNAME, GST_TAG_TITLE_SORTNAME and + GST_TAG_COMPOSER + + Based on the current CVS version of gstid3v2mux + + -- Sjoerd Simons Sat, 24 Nov 2007 22:07:19 +0100 + +gst-plugins-good0.10 (0.10.6-3) unstable; urgency=low + + * debian/rules: + + Set GST_REGISTRY before the dh_gstscancodecs call to save the registry + somewhere on buildds without writable home and speed things up a bit. + * debian/build-deps.in: + + Remove check from build dependencies. This is only an indirect build + dependency that is already satisfied by libgstreamer0.10-dev. configure + only checks for libgstcheck, not check. + * debian/patches/20_gconf-state-change.patch: + + Fix errors while changing the state of the gconf sink. Patch from + upstream CVS, see http://bugzilla.gnome.org/show_bug.cgi?id=471364 . + + -- Sebastian Dröge Tue, 25 Sep 2007 15:31:31 +0200 + +gst-plugins-good0.10 (0.10.6-2) unstable; urgency=low + + * debian/control.in: + + Add Replaces on gstreamer0.10-plugins-really-bad (<< 0.10.4.2), which is + maintained in the Debian Multimedia project and also contained the + WavPack plugin. + * debian/build-deps.in, + debian/rules: + + Call dh_gstinstallcodecs to generate the codecs database. + * debian/gstreamer-plugins-good.install, + debian/gstreamer-plugins-good-doc.install, + debian/control.in: + + Move translations from the docs package to the plugin package. + + -- Sebastian Dröge Fri, 31 Aug 2007 09:27:06 +0200 + +gst-plugins-good0.10 (0.10.6-1) unstable; urgency=low + + * New upstream release, "Wobble Board": + + Fixes muxing of raw audio in Matroska files (Closes: #360536). + + Fixes memory leak in cutter and level plugins (Closes: #425114). + + debian/patches/20_gstavidemux-error-out-on-pull_range.patch, + debian/patches/30_speex-rtp-fixes.patch, + debian/patches/40_flac1.1.3.patch, + debian/patches/99_autoreconf.patch: + - Dropped, merged upstream. + + debian/build-deps.in, + debian/rules: + - Require gstreamer and gst-plugins-base >= 0.10.13. + + debian/gstreamer-plugins-good.install, + debian/build-deps.in, + debian/control.in: + - Add wavpack, qtdemux, videocrop, monoscope and gamma plugins. + For this add Replaces on gstreamer0.10-plugins-bad (<< 0.10.4.2). + + -- Sebastian Dröge Tue, 19 Jun 2007 19:28:52 +0200 + +gst-plugins-good0.10 (0.10.5-7) unstable; urgency=low + + * debian/control.in: + + Use ${binary:Version} instead of ${Source-Version} to make lintian happy. + * debian/patches/40_flac1.1.3.patch: + + Patch from upstream CVS to work with flac >= 1.1.3. (Closes: #427744, #426647). + http://bugzilla.gnome.org/show_bug.cgi?id=385887 + * debian/patches/99_autoreconf.patch: + + Regenerate configure for the above change. + + -- Sebastian Dröge Sun, 10 Jun 2007 22:58:34 +0200 + +gst-plugins-good0.10 (0.10.5-6) unstable; urgency=low + + * debian/patches/30_speex-rtp-fixes.patch + + Added. Fix the speex rtp payloader and depayloader. (From upstream CVS) + + -- Sjoerd Simons Thu, 10 May 2007 13:27:36 +0200 + +gst-plugins-good0.10 (0.10.5-5) unstable; urgency=low + + * Upload to unstable + * Merge experimental branch: + [ Loic Minier ] + + Build-depend on libpng12-dev instead of libpng12-0-dev to get the + libpng12.pc file. + + [ Sebastian Dröge ] + + New upstream release 0.10.5, "The Path of Thorns": + - Fixes playback of some internet radio streams (Closes: #384377) + - debian/patches/12_gstcacasink-header-include.patch, + debian/patches/13_separate-handle-for-avc-ops.patch: + . Dropped, merged upstream + - debian/rules, + - debian/build-deps.in: + . Build depend on gstreamer / gst-plugins-base >= 0.10.10.1 + - debian/gstreamer-plugins-good.install: + . Add audiofx plugin + + debian/patches/11_esdsink-priority.patch: + - Dropped, priorities are cached in the gst registry, thus this patch had + almost no effect. This should somehow be solved by a determined priority + order for sinks + + debian/control: + - Updated to use my debian.org mail address + + debian/control, + debian/gstreamer-plugins-good.install: + - Only build the video4linux2 plugin on Linux. Fixes FTBFS everywhere else + + debian/build-deps.in, + debian/rules: + - Use type-handling to only depend on libraw1394 and friends on Linux + + [ Sjoerd Simons ] + + Enable experimental plugins (the v4l2src plugin) + + Conflict with gstreamer0.10-plugins-bad < 0.10.4 which used to provide the + v4l2src plugin. + + Add myself to uploaders + + * debian/patches/20_gstavidemux-error-out-on-pull_range.patch: + + Updated for the new upstream version + + -- Sebastian Dröge Tue, 10 Apr 2007 20:34:53 +0200 + +gst-plugins-good0.10 (0.10.4-3) unstable; urgency=high + + * New patch, 13_separate-handle-for-avc-ops, to use a separate handle on + raw1394 for AVC operations. + * Urgency high as the dv plugin is unusable without this patch. + * Merge 0.10.4-2. + + -- Loic Minier Wed, 25 Oct 2006 16:07:07 +0200 + +gst-plugins-good0.10 (0.10.4-2) experimental; urgency=low + + * Re-add -dbg package and target at experimental. + + -- Loic Minier Fri, 13 Oct 2006 12:27:45 +0200 + +gst-plugins-good0.10 (0.10.4-1) unstable; urgency=low + + [ Loic Minier ] + * New patch, 11_esdsink-priority, taken from Ubuntu to include esdsink in + the candidates of autoaudiosink. (Closes: #373703) + + [ Sebastian Dröge ] + * New upstream release, "Dear Leader". + - Fixes reading and parsing of some id3v2 tags. (Closes: #361310) + - Tries esdsink but does not autospawn esound. (Closes: #361841) + - Fixes crash of dv1394src by using a separate handle for AVC operations. + (Closes: #369936) + - debian/patches/10_fix-h263-caps.patch: + + dropped, merged upstream + - debian/patches/11_esdsink-priority.patch: + + Updated, partially upstream + - debian/rules: + + Require libraw1394-dev (>= 1.2.1) and libiec61883-dev (>= 1.0.0) + * debian/control.in: + + Added myself to Uploaders + * debian/gstreamer-plugins-good.install: + + Remove the duplicated entries for the dv1394 element + * debian/compat, + debian/build-deps.in: + + Update to debhelper compat level 5 + * debian/rules, + debian/control.in: + + Add a -dbg package + + [ Loic Minier ] + * Rename patch 11_gstcacasink-header-include to + 12_gstcacasink-header-include. + * Drop -dbg package for now, this version is for etch. + + -- Loic Minier Fri, 13 Oct 2006 12:13:08 +0200 + +gst-plugins-good0.10 (0.10.3-3) unstable; urgency=medium + + * New patch, 11_gstcacasink-header-include, to fix building of the libcaca + plugin; thanks Sam Hocevar. (Closes: #386169) + + -- Loic Minier Sat, 9 Sep 2006 20:32:43 +0200 + +gst-plugins-good0.10 (0.10.3-2) unstable; urgency=low + + * Bump up Standards-Version to 3.7.2. + [debian/control, debian/control.in] + * New patch from upstream to fix caps of H263 RTP streams, thanks Paul van + Tilburg. + [debian/patches/10_fix-h263-caps.patch] + * 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 Wed, 17 May 2006 23:05:56 +0200 + +gst-plugins-good0.10 (0.10.3-1) unstable; urgency=low + + * New upstream release, "Desplazado". + - Bump libgstreamer0.10-dev build-dep to 0.10.4.1. + [debian/control, debian/rules] + - Bump libgstreamer-plugins-base0.10-dev build-dep to 0.10.5.1. + [debian/build-deps.in, debian/build-deps, debian/control] + - New ximagesrc plugin. + . Add libxdamage-dev, libxext-dev, and libxfixes-dev build-deps. + [debian/build-deps.in, debian/build-deps, debian/control] + . Install in gstreamer-plugins-good. + [debian/gstreamer-plugins-good.install] + - New annodex plugin. + . Add libxml2-dev build-dep. + [debian/build-deps.in, debian/build-deps, debian/control] + . Install in gstreamer-plugins-good. + [debian/gstreamer-plugins-good.install] + - New gdkpixbuf plugin. + . Add libgtk2.0-dev build-dep. + [debian/build-deps.in, debian/build-deps, debian/control] + . Install in gstreamer-plugins-good. + [debian/gstreamer-plugins-good.install] + - New halelements plugin. + . Add libdbus-1-dev (>= 0.32) and libhal-dev (>= 0.5.6) build-deps. + [debian/build-deps.in, debian/build-deps, debian/control] + . Install in gstreamer-plugins-good. + [debian/gstreamer-plugins-good.install] + - New taglib plugin. + . Add libtag1-dev build-dep. + [debian/build-deps.in, debian/build-deps, debian/control] + . Install in gstreamer-plugins-good. + [debian/gstreamer-plugins-good.install] + - New videobalance plugin, installed in gstreamer-plugins-good. + [debian/gstreamer-plugins-good.install] + - New icydemux plugin. + . Install in gstreamer-plugins-good. + [debian/gstreamer-plugins-good.install] + + -- Loic Minier Sat, 6 May 2006 11:52:57 +0200 + +gst-plugins-good0.10 (0.10.2-2) unstable; urgency=low + + * Depend on the alsa package instead of recommending it, since package + managers don't honor Recommends: in all cases. (Closes: #352212) + [debian/control, debian/control.in] + + -- Loic Minier Thu, 16 Feb 2006 14:45:38 +0100 + +gst-plugins-good0.10 (0.10.2-1) unstable; urgency=low + + * New upstream release, "Papa was a rolling stone". + + -- Loic Minier Tue, 14 Feb 2006 10:44:13 +0100 + +gst-plugins-good0.10 (0.10.1.2-1) unstable; urgency=low + + * New upstream pre-release. + - Bump up libgstreamer0.10-dev build-dep to >= 0.10.2.2. + [debian/control, debian/rules] + - Bump up libgstreamer-plugins-base0.10-dev to >= 0.10.2.2. + [debian/build-deps.in, debian/build-deps, debian/control] + - Add apetag plugin. + . Install plugin. + [debian/gstreamer-plugins-good.install] + - Add cdio plugin. + . Add libcdio-dev >= 0.71 build-dep. + . Install plugin. + [debian/build-deps, debian/build-deps.in, debian/control, debian/gstreamer-plugins-good.install] + * Use upstream descriptions in packages descriptions. + [debian/control, debian/control.in] + + -- Loic Minier Sat, 11 Feb 2006 17:30:38 +0100 + +gst-plugins-good0.10 (0.10.1-2) unstable; urgency=low + + * Recommend gstreamer0.10-alsa and gstreamer0.10-x, as these are used by + default upstream -- in the GConf schemas -- and used from the autodetect + audio and videosinks. + [debian/control, debian/control.in] + + -- Loic Minier Sun, 5 Feb 2006 15:08:53 +0100 + +gst-plugins-good0.10 (0.10.1-1) unstable; urgency=low + + * New upstream release, "Li". + - Bump libgstreamer-plugins-base0.10-dev build-dep to >= 0.10.1. + [debian/build-deps.in, debian/control] + - Bump libgstreamer0.10-dev build-dep to >= 0.10.1. + [debian/control, debian/rules] + - Add id3demux plugin. + [debian/gstreamer-plugins-good.install] + - Add translated strings from /usr/share/locale. + [debian/gstreamer-plugins-good.install] + * Drop useless gst_plugins_base_lib_dev_dep, gst_plugins_base_lib_dev, + gst_plugins_base_lib, and gst_plugins_good_version definitions. + [debian/rules] + + -- Loic Minier Sun, 15 Jan 2006 18:04:49 +0100 + +gst-plugins-good0.10 (0.10.0-1) unstable; urgency=low + + [ Sebastien Bacher ] + * New package: + - clean patches + [debian/patches/50_cdparanoia-fix-eos-detection-of-last-title.patch] + - updated Build-Depends [debian/build-deps.in] + - updated documentation [debian/README.Debian, debian/TODO.Debian] + - updated packages list [debian/control.in, debian/gstreamer-alsa.install, + debian/gstreamer-gnomevfs.install, debian/gstreamer-misc.install, + debian/gstreamer-plugins-base-apps.instal, + debian/gstreamer-plugins-base-apps.manpages, + debian/gstreamer-plugins-base-doc.install, + debian/gstreamer-x.install, debian/libgstreamer-plugins-base-dev.install, + debian/libgstreamer-plugins-base.install, debian/gstreamer-aa.install, + debian/gstreamer-auto.install, debian/gstreamer-caca.install, + debian/gstreamer-esd.install, debian/gstreamer-misc-good.install, + debian/gstreamer-oss.install, debian/gstreamer-plugins-good-doc.install, + debian/rules] + - updated upstream location [debian/watch] + - don't use type-handling it's not useful + [debian/build-deps.in, debian/control.in, debian/rules] + + [ Loic Minier ] + * Merge aa, auto, caca, and oss packages and plugins in misc and let it + provide audio and videosinks; use a couple of @GST_ABI@s where + appropriate. + [debian/control, debian/control.in, + debian/gstreamer-aa.install, debian/gstreamer-caca.install, + debian/gstreamer-misc-good.install, debian/gstreamer-oss.install, + debian/rules] + * Rename for good misc-good in good. + [debian/control debian/control.in + debian/gstreamer-misc-good.install debian/rules] + * Downgrade cdbs build-dep for Debian. + [debian/build-deps, debian/build-deps.in, debian/control] + * Rename gstreamer0.10-good in gstreamer0.10-plugins-good. + [debian/control, debian/control.in, debian/gstreamer-good.install, + debian/gstreamer-plugins-good.install, debian/rules] + * Add a build-dep on check. + [debian/build-deps, debian/build-deps.in, debian/control] + * Remove python-twisted build-dep. + [debian/build-deps, debian/build-deps.in, debian/control] + + -- Loic Minier Wed, 21 Dec 2005 17:37:46 +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-good0.10-0.10.23.orig/debian/mk.control +++ gst-plugins-good0.10-0.10.23/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-good0.10-0.10.23.orig/debian/gstreamer-esd.install +++ gst-plugins-good0.10-0.10.23/debian/gstreamer-esd.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstesd.so --- gst-plugins-good0.10-0.10.23.orig/debian/gstreamer-plugins-good-doc.install +++ gst-plugins-good0.10-0.10.23/debian/gstreamer-plugins-good-doc.install @@ -0,0 +1 @@ +debian/tmp/usr/share/gtk-doc --- gst-plugins-good0.10-0.10.23.orig/debian/build-deps +++ gst-plugins-good0.10-0.10.23/debian/build-deps @@ -0,0 +1,39 @@ +@GST_LIB_DEV_DEP@ +@GST_EXTRA_BUILD_DEPENDS@ +libgstreamer-plugins-base0.10-dev (>= 0.10.29) +autotools-dev +cdbs (>= 0.4.20) +type-handling (>= 0.2.14) +debhelper (>= 5) +pkg-config (>= 0.11.0) +gtk-doc-tools +gconf2 +libglib2.0-dev (>= 2.18) +liboil0.3-dev (>= 0.3.8) +libcairo2-dev +libcaca-dev +libspeex-dev (>= 1.1.6) +libpng12-dev +libshout3-dev +libjpeg62-dev (>= 6b) +libaa1-dev (>= 1.4p5) +libesd0-dev (>= 0.2.28) +libflac-dev (>= 1.1.4) +libdv4-dev | libdv-dev +libgconf2-dev +libxdamage-dev +libxext-dev +libxfixes-dev +libxv-dev +libxml2-dev +libgtk2.0-dev (>= 2.8) +libtag1-dev (>= 1.5) +libwavpack-dev (>= 4.20) +gstreamer-tools (>= 0.10.14) +lsb-release +gstreamer0.10-plugins-base (>= 0.10.29) +libsoup-gnome2.4-dev (>= 2.26) +libpulse-dev (>= 0.9.20) +libbz2-dev +gstreamer0.10-doc +gstreamer0.10-plugins-base-doc --- gst-plugins-good0.10-0.10.23.orig/debian/README.Debian +++ gst-plugins-good0.10-0.10.23/debian/README.Debian @@ -0,0 +1,57 @@ +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-good many independent plugins + +plugins with external dependencies: + + gstreamerVER-aa + gstreamerVER-auto + gstreamerVER-caca + gstreamerVER-esd + gstreamerVER-oss + +documentation: + + gstreamerVER-plugins-good-doc html documentation + + +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-good0.10-0.10.23.orig/debian/control.in +++ gst-plugins-good0.10-0.10.23/debian/control.in @@ -0,0 +1,125 @@ +Source: gst-plugins-good@GST_ABI@ +Section: libs +Priority: optional +Maintainer: Ubuntu Desktop Team +XSBC-Original-Maintainer: Maintainers of GStreamer packages +Uploaders: Loic Minier , + Sebastian Dröge , + Sjoerd Simons +Build-Depends: BUILDDEPS +Standards-Version: 3.8.4 + +Package: @GST_PKGNAME@-plugins-good-doc +Architecture: all +Section: doc +Depends: gstreamer0.10-doc, + gstreamer0.10-plugins-base-doc, + ${misc:Depends} +Description: GStreamer documentation for plugins from the "good" 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 documentation for plugins from the "good" set, + a set of good-quality plug-ins under the LGPL license. + +Package: @GST_PKGNAME@-esd +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends} +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 ESD + 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 ESD (ESounD), the + Enlightened Sound Daemon. + +Package: @GST_PKGNAME@-pulseaudio +Architecture: any +Section: sound +Depends: ${misc:Depends}, + ${shlibs:Depends} +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 PulseAudio + 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 PulseAudio, a sound server + for POSIX and WIN32 systems. + +Package: @GST_PKGNAME@-plugins-good +Architecture: any +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends}, + @GST_PKGNAME@-audiosink, + gstreamer0.10-plugins-base +Recommends: @GST_PKGNAME@-x +Replaces: gstreamer0.10-plugins-bad (<< 0.10.18.2), gstreamer0.10-plugins-really-bad (<< 0.10.18.2), gstreamer0.10-plugins-good-doc (<< 0.10.6-2) +Conflicts: gstreamer0.10-plugins-bad (<< 0.10.18.2), gstreamer0.10-plugins-really-bad (<< 0.10.18.2) +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 "good" 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 "good" set, a set + of good-quality plug-ins under the LGPL license. + +Package: @GST_PKGNAME@-plugins-good-dbg +Architecture: any +Section: debug +Priority: extra +Depends: @GST_PKGNAME@-plugins-good (= ${binary:Version}), + @GST_PKGNAME@-pulseaudio (= ${binary:Version}), + @GST_PKGNAME@-esd (= ${binary:Version}), + ${misc:Depends} +Replaces: gstreamer0.10-plugins-bad-dbg (<< 0.10.18.2) +Conflicts: gstreamer0.10-plugins-bad-dbg (<< 0.10.18.2) +Description: GStreamer plugins from the "good" 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. + --- gst-plugins-good0.10-0.10.23.orig/debian/compat +++ gst-plugins-good0.10-0.10.23/debian/compat @@ -0,0 +1 @@ +5 --- gst-plugins-good0.10-0.10.23.orig/debian/gstreamer-pulseaudio.install +++ gst-plugins-good0.10-0.10.23/debian/gstreamer-pulseaudio.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/gstreamer-@GST_ABI@/libgstpulse.so --- gst-plugins-good0.10-0.10.23.orig/debian/build-deps.in +++ gst-plugins-good0.10-0.10.23/debian/build-deps.in @@ -0,0 +1,39 @@ +@GST_LIB_DEV_DEP@ +@GST_EXTRA_BUILD_DEPENDS@ +libgstreamer-plugins-base0.10-dev (>= 0.10.29) +autotools-dev +cdbs (>= 0.4.20) +type-handling (>= 0.2.14) +debhelper (>= 5) +pkg-config (>= 0.11.0) +gtk-doc-tools +gconf2 +libglib2.0-dev (>= 2.18) +liboil0.3-dev (>= 0.3.8) +libcairo2-dev +libcaca-dev +libspeex-dev (>= 1.1.6) +libpng12-dev +libshout3-dev +libjpeg62-dev (>= 6b) +libaa1-dev (>= 1.4p5) +libesd0-dev (>= 0.2.28) +libflac-dev (>= 1.1.4) +libdv4-dev | libdv-dev +libgconf2-dev +libxdamage-dev +libxext-dev +libxfixes-dev +libxv-dev +libxml2-dev +libgtk2.0-dev (>= 2.8) +libtag1-dev (>= 1.5) +libwavpack-dev (>= 4.20) +gstreamer-tools (>= 0.10.14) +lsb-release +gstreamer0.10-plugins-base (>= 0.10.29) +libsoup-gnome2.4-dev (>= 2.26) +libpulse-dev (>= 0.9.20) +libbz2-dev +gstreamer0.10-doc +gstreamer0.10-plugins-base-doc --- gst-plugins-good0.10-0.10.23.orig/debian/patches/99_autoreconf.patch +++ gst-plugins-good0.10-0.10.23/debian/patches/99_autoreconf.patch @@ -0,0 +1,3527 @@ +diff -Nur gst-plugins-good0.10-0.10.23.deb/configure gst-plugins-good0.10-0.10.23/configure +--- gst-plugins-good0.10-0.10.23.deb/configure 2010-05-31 17:29:53.000000000 +0200 ++++ gst-plugins-good0.10-0.10.23/configure 2010-05-31 17:30:12.000000000 +0200 +@@ -35161,7 +35161,7 @@ + + + +-ac_config_files="$ac_config_files Makefile gst/Makefile gst/alpha/Makefile gst/apetag/Makefile gst/audiofx/Makefile gst/auparse/Makefile gst/autodetect/Makefile gst/avi/Makefile gst/cutter/Makefile gst/deinterlace/Makefile gst/debugutils/Makefile gst/effectv/Makefile gst/equalizer/Makefile gst/flv/Makefile gst/id3demux/Makefile gst/icydemux/Makefile gst/imagefreeze/Makefile gst/interleave/Makefile gst/goom/Makefile gst/goom2k1/Makefile gst/law/Makefile gst/level/Makefile gst/matroska/Makefile gst/monoscope/Makefile gst/multifile/Makefile gst/multipart/Makefile gst/qtdemux/Makefile gst/replaygain/Makefile gst/rtp/Makefile gst/rtpmanager/Makefile gst/rtsp/Makefile gst/shapewipe/Makefile gst/smpte/Makefile gst/spectrum/Makefile gst/udp/Makefile gst/videobox/Makefile gst/videocrop/Makefile gst/videofilter/Makefile gst/videomixer/Makefile gst/wavenc/Makefile gst/wavparse/Makefile gst/flx/Makefile gst/y4m/Makefile ext/jpeg/Makefile ext/Makefile ext/aalib/Makefile ext/annodex/Makefile ext/cairo/Makefile ext/dv/Makefile ext/esd/Makefile ext/flac/Makefile ext/gconf/Makefile ext/gdk_pixbuf/Makefile ext/hal/Makefile ext/libcaca/Makefile ext/libpng/Makefile ext/pulse/Makefile ext/raw1394/Makefile ext/shout2/Makefile ext/soup/Makefile ext/speex/Makefile ext/taglib/Makefile ext/wavpack/Makefile sys/Makefile sys/directsound/Makefile sys/oss/Makefile sys/oss4/Makefile sys/osxaudio/Makefile sys/osxvideo/Makefile sys/sunaudio/Makefile sys/v4l2/Makefile sys/waveform/Makefile sys/ximage/Makefile po/Makefile.in tests/Makefile tests/check/Makefile tests/examples/Makefile tests/examples/audiofx/Makefile tests/examples/equalizer/Makefile tests/examples/level/Makefile tests/examples/rtp/Makefile tests/examples/shapewipe/Makefile tests/examples/spectrum/Makefile tests/examples/v4l2/Makefile tests/files/Makefile tests/icles/Makefile gconf/Makefile gconf/gstreamer.schemas common/Makefile common/m4/Makefile m4/Makefile docs/Makefile docs/plugins/Makefile docs/version.entities pkgconfig/Makefile pkgconfig/gstreamer-plugins-good-uninstalled.pc gst-plugins-good.spec" ++ac_config_files="$ac_config_files Makefile gst/Makefile gst/alpha/Makefile gst/apetag/Makefile gst/audiofx/Makefile gst/auparse/Makefile gst/autodetect/Makefile gst/avi/Makefile gst/cutter/Makefile gst/deinterlace/Makefile gst/debugutils/Makefile gst/effectv/Makefile gst/equalizer/Makefile gst/flv/Makefile gst/id3demux/Makefile gst/icydemux/Makefile gst/imagefreeze/Makefile gst/interleave/Makefile gst/goom/Makefile gst/goom2k1/Makefile gst/law/Makefile gst/level/Makefile gst/matroska/Makefile gst/monoscope/Makefile gst/multifile/Makefile gst/multipart/Makefile gst/qtdemux/Makefile gst/replaygain/Makefile gst/rtp/Makefile gst/rtpmanager/Makefile gst/rtsp/Makefile gst/shapewipe/Makefile gst/smpte/Makefile gst/spectrum/Makefile gst/udp/Makefile gst/videobox/Makefile gst/videocrop/Makefile gst/videofilter/Makefile gst/videomixer/Makefile gst/wavenc/Makefile gst/wavparse/Makefile gst/flx/Makefile gst/y4m/Makefile ext/jpeg/Makefile ext/Makefile ext/aalib/Makefile ext/annodex/Makefile ext/cairo/Makefile ext/dv/Makefile ext/esd/Makefile ext/flac/Makefile ext/gconf/Makefile ext/gdk_pixbuf/Makefile ext/hal/Makefile ext/libcaca/Makefile ext/libpng/Makefile ext/pulse/Makefile ext/raw1394/Makefile ext/shout2/Makefile ext/soup/Makefile ext/speex/Makefile ext/taglib/Makefile ext/wavpack/Makefile sys/Makefile sys/directsound/Makefile sys/oss/Makefile sys/oss4/Makefile sys/osxaudio/Makefile sys/osxvideo/Makefile sys/sunaudio/Makefile sys/v4l2/Makefile sys/waveform/Makefile sys/ximage/Makefile farsight/Makefile farsight/valve/Makefile farsight/liveadder/Makefile farsight/dtmf/Makefile farsight/rtpmux/Makefile farsight/autoconvert/Makefile po/Makefile.in tests/Makefile tests/check/Makefile tests/examples/Makefile tests/examples/audiofx/Makefile tests/examples/equalizer/Makefile tests/examples/level/Makefile tests/examples/rtp/Makefile tests/examples/shapewipe/Makefile tests/examples/spectrum/Makefile tests/examples/v4l2/Makefile tests/files/Makefile tests/icles/Makefile gconf/Makefile gconf/gstreamer.schemas common/Makefile common/m4/Makefile m4/Makefile docs/Makefile docs/plugins/Makefile docs/version.entities pkgconfig/Makefile pkgconfig/gstreamer-plugins-good-uninstalled.pc gst-plugins-good.spec" + + + sed \ +@@ -36949,6 +36949,12 @@ + "sys/v4l2/Makefile") CONFIG_FILES="$CONFIG_FILES sys/v4l2/Makefile" ;; + "sys/waveform/Makefile") CONFIG_FILES="$CONFIG_FILES sys/waveform/Makefile" ;; + "sys/ximage/Makefile") CONFIG_FILES="$CONFIG_FILES sys/ximage/Makefile" ;; ++ "farsight/Makefile") CONFIG_FILES="$CONFIG_FILES farsight/Makefile" ;; ++ "farsight/valve/Makefile") CONFIG_FILES="$CONFIG_FILES farsight/valve/Makefile" ;; ++ "farsight/liveadder/Makefile") CONFIG_FILES="$CONFIG_FILES farsight/liveadder/Makefile" ;; ++ "farsight/dtmf/Makefile") CONFIG_FILES="$CONFIG_FILES farsight/dtmf/Makefile" ;; ++ "farsight/rtpmux/Makefile") CONFIG_FILES="$CONFIG_FILES farsight/rtpmux/Makefile" ;; ++ "farsight/autoconvert/Makefile") CONFIG_FILES="$CONFIG_FILES farsight/autoconvert/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + "tests/check/Makefile") CONFIG_FILES="$CONFIG_FILES tests/check/Makefile" ;; +diff -Nur gst-plugins-good0.10-0.10.23.deb/farsight/autoconvert/Makefile.in gst-plugins-good0.10-0.10.23/farsight/autoconvert/Makefile.in +--- gst-plugins-good0.10-0.10.23.deb/farsight/autoconvert/Makefile.in 2010-05-31 17:29:53.000000000 +0200 ++++ gst-plugins-good0.10-0.10.23/farsight/autoconvert/Makefile.in 2010-05-31 17:30:16.000000000 +0200 +@@ -34,12 +34,13 @@ + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ +-subdir = gst/autoconvert ++subdir = farsight/autoconvert + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ + $(top_srcdir)/common/m4/as-auto-alt.m4 \ + $(top_srcdir)/common/m4/as-compiler-flag.m4 \ ++ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ + $(top_srcdir)/common/m4/as-objc.m4 \ + $(top_srcdir)/common/m4/as-python.m4 \ + $(top_srcdir)/common/m4/as-scrub-include.m4 \ +@@ -54,16 +55,15 @@ + $(top_srcdir)/common/m4/gst-feature.m4 \ + $(top_srcdir)/common/m4/gst-gettext.m4 \ + $(top_srcdir)/common/m4/gst-glib2.m4 \ +- $(top_srcdir)/common/m4/gst-platform.m4 \ + $(top_srcdir)/common/m4/gst-plugin-docs.m4 \ + $(top_srcdir)/common/m4/gst-plugindir.m4 \ + $(top_srcdir)/common/m4/gst-x11.m4 \ + $(top_srcdir)/common/m4/gst.m4 \ + $(top_srcdir)/common/m4/gtk-doc.m4 \ +- $(top_srcdir)/common/m4/pkg.m4 \ +- $(top_srcdir)/common/m4/shave.m4 $(top_srcdir)/m4/gettext.m4 \ +- $(top_srcdir)/m4/gst-alsa.m4 $(top_srcdir)/m4/gst-fionread.m4 \ +- $(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \ ++ $(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/aalib.m4 \ ++ $(top_srcdir)/m4/esd.m4 $(top_srcdir)/m4/gconf-2.m4 \ ++ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \ ++ $(top_srcdir)/m4/gst-shout2.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ +@@ -105,7 +105,10 @@ + am_libgstautoconvert_la_OBJECTS = \ + libgstautoconvert_la-gstautoconvert.lo + libgstautoconvert_la_OBJECTS = $(am_libgstautoconvert_la_OBJECTS) +-libgstautoconvert_la_LINK = $(LIBTOOL) --tag=CC \ ++AM_V_lt = $(am__v_lt_$(V)) ++am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) ++am__v_lt_0 = --silent ++libgstautoconvert_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(libgstautoconvert_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(libgstautoconvert_la_CFLAGS) $(CFLAGS) \ + $(libgstautoconvert_la_LDFLAGS) $(LDFLAGS) -o $@ +@@ -115,53 +118,55 @@ + am__mv = mv -f + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ ++ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ ++ $(AM_CFLAGS) $(CFLAGS) ++AM_V_CC = $(am__v_CC_$(V)) ++am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) ++am__v_CC_0 = @echo " CC " $@; ++AM_V_at = $(am__v_at_$(V)) ++am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) ++am__v_at_0 = @ + CCLD = $(CC) +-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ +- $(LDFLAGS) -o $@ ++LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++AM_V_CCLD = $(am__v_CCLD_$(V)) ++am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) ++am__v_CCLD_0 = @echo " CCLD " $@; ++AM_V_GEN = $(am__v_GEN_$(V)) ++am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) ++am__v_GEN_0 = @echo " GEN " $@; + SOURCES = $(libgstautoconvert_la_SOURCES) + DIST_SOURCES = $(libgstautoconvert_la_SOURCES) + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++AALIB_CFLAGS = @AALIB_CFLAGS@ ++AALIB_CONFIG = @AALIB_CONFIG@ ++AALIB_LIBS = @AALIB_LIBS@ + ACLOCAL = @ACLOCAL@ + ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +-ACMENC_CFLAGS = @ACMENC_CFLAGS@ +-ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@ +-ALSA_CFLAGS = @ALSA_CFLAGS@ +-ALSA_LIBS = @ALSA_LIBS@ +-AMRWB_LIBS = @AMRWB_LIBS@ + AMTAR = @AMTAR@ +-AM_MAKEFLAGS = @AM_MAKEFLAGS@ +-APEXSINK_CFLAGS = @APEXSINK_CFLAGS@ +-APEXSINK_LIBS = @APEXSINK_LIBS@ ++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ++ANNODEX_CFLAGS = @ANNODEX_CFLAGS@ ++ANNODEX_LIBS = @ANNODEX_LIBS@ + AR = @AR@ + AS = @AS@ +-ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@ +-ASSRENDER_LIBS = @ASSRENDER_LIBS@ + AUTOCONF = @AUTOCONF@ + AUTOHEADER = @AUTOHEADER@ + AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + BZ2_LIBS = @BZ2_LIBS@ ++CAIRO_CFLAGS = @CAIRO_CFLAGS@ ++CAIRO_LIBS = @CAIRO_LIBS@ + CC = @CC@ ++CCAS = @CCAS@ ++CCASDEPMODE = @CCASDEPMODE@ + CCASFLAGS = @CCASFLAGS@ + CCDEPMODE = @CCDEPMODE@ +-CDAUDIO_CFLAGS = @CDAUDIO_CFLAGS@ +-CDAUDIO_CONFIG = @CDAUDIO_CONFIG@ +-CDAUDIO_LIBS = @CDAUDIO_LIBS@ +-CELT_0_5_CFLAGS = @CELT_0_5_CFLAGS@ +-CELT_0_5_LIBS = @CELT_0_5_LIBS@ +-CELT_0_7_CFLAGS = @CELT_0_7_CFLAGS@ +-CELT_0_7_LIBS = @CELT_0_7_LIBS@ +-CELT_CFLAGS = @CELT_CFLAGS@ +-CELT_LIBS = @CELT_LIBS@ + CFLAGS = @CFLAGS@ +-COG_CFLAGS = @COG_CFLAGS@ +-COG_LIBS = @COG_LIBS@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CXX = @CXX@ +@@ -169,7 +174,6 @@ + CXXDEPMODE = @CXXDEPMODE@ + CXXFLAGS = @CXXFLAGS@ + CYGPATH_W = @CYGPATH_W@ +-DCCP_LIBS = @DCCP_LIBS@ + DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@ + DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@ + DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@ +@@ -178,61 +182,47 @@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ + DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@ +-DIRAC_CFLAGS = @DIRAC_CFLAGS@ +-DIRAC_LIBS = @DIRAC_LIBS@ +-DIRECTDRAW_LIBS = @DIRECTDRAW_LIBS@ +-DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ +-DIRECTFB_LIBS = @DIRECTFB_LIBS@ ++DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@ ++DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@ + DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@ +-DIRECTX_CFLAGS = @DIRECTX_CFLAGS@ +-DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@ +-DIVXDEC_LIBS = @DIVXDEC_LIBS@ +-DIVXENC_LIBS = @DIVXENC_LIBS@ + DLLTOOL = @DLLTOOL@ + DSYMUTIL = @DSYMUTIL@ +-DTS_LIBS = @DTS_LIBS@ + DUMPBIN = @DUMPBIN@ +-DVDNAV_CFLAGS = @DVDNAV_CFLAGS@ +-DVDNAV_CONFIG = @DVDNAV_CONFIG@ +-DVDNAV_LIBS = @DVDNAV_LIBS@ ++DV1394_CFLAGS = @DV1394_CFLAGS@ ++DV1394_LIBS = @DV1394_LIBS@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + ERROR_CFLAGS = @ERROR_CFLAGS@ + ERROR_CXXFLAGS = @ERROR_CXXFLAGS@ ++ESD_CFLAGS = @ESD_CFLAGS@ ++ESD_CONFIG = @ESD_CONFIG@ ++ESD_LIBS = @ESD_LIBS@ + EXEEXT = @EXEEXT@ +-EXIF_CFLAGS = @EXIF_CFLAGS@ +-EXIF_LIBS = @EXIF_LIBS@ +-F77 = @F77@ +-FAAC_LIBS = @FAAC_LIBS@ +-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@ +-FAAD_LIBS = @FAAD_LIBS@ +-FC = @FC@ + FFLAGS = @FFLAGS@ + FGREP = @FGREP@ +-FLITE_CFLAGS = @FLITE_CFLAGS@ +-FLITE_LIBS = @FLITE_LIBS@ ++FLAC_CFLAGS = @FLAC_CFLAGS@ ++FLAC_LIBS = @FLAC_LIBS@ ++GCONFTOOL = @GCONFTOOL@ ++GCONF_CFLAGS = @GCONF_CFLAGS@ ++GCONF_LIBS = @GCONF_LIBS@ ++GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ ++GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ + GCOV = @GCOV@ + GCOV_CFLAGS = @GCOV_CFLAGS@ + GCOV_LIBS = @GCOV_LIBS@ ++GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ ++GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ + GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +-GIO_CFLAGS = @GIO_CFLAGS@ +-GIO_LIBS = @GIO_LIBS@ + GLIB_CFLAGS = @GLIB_CFLAGS@ + GLIB_LIBS = @GLIB_LIBS@ + GLIB_PREFIX = @GLIB_PREFIX@ + GLIB_REQ = @GLIB_REQ@ +-GME_LIBS = @GME_LIBS@ +-GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@ +-GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@ + GMSGFMT = @GMSGFMT@ + GMSGFMT_015 = @GMSGFMT_015@ +-GMYTH_CFLAGS = @GMYTH_CFLAGS@ +-GMYTH_LIBS = @GMYTH_LIBS@ + GREP = @GREP@ +-GSM_LIBS = @GSM_LIBS@ + GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@ + GSTPB_PREFIX = @GSTPB_PREFIX@ + GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@ +@@ -249,6 +239,7 @@ + GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@ + GST_LIBS = @GST_LIBS@ + GST_LICENSE = @GST_LICENSE@ ++GST_LT_LDFLAGS = @GST_LT_LDFLAGS@ + GST_MAJORMINOR = @GST_MAJORMINOR@ + GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@ + GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@ +@@ -265,20 +256,20 @@ + GTKDOC_CHECK = @GTKDOC_CHECK@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_AMRWB = @HAVE_AMRWB@ ++GUDEV_CFLAGS = @GUDEV_CFLAGS@ ++GUDEV_LIBS = @GUDEV_LIBS@ ++HAL_CFLAGS = @HAL_CFLAGS@ ++HAL_LIBS = @HAL_LIBS@ ++HAVE_AVC1394 = @HAVE_AVC1394@ + HAVE_BZ2 = @HAVE_BZ2@ + HAVE_CXX = @HAVE_CXX@ +-HAVE_DIRECTDRAW = @HAVE_DIRECTDRAW@ + HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@ +-HAVE_DTS = @HAVE_DTS@ +-HAVE_FAAC = @HAVE_FAAC@ +-HAVE_FAAD = @HAVE_FAAD@ +-HAVE_FLITE = @HAVE_FLITE@ +-HAVE_GSM = @HAVE_GSM@ +-HAVE_JP2K = @HAVE_JP2K@ +-HAVE_NAS = @HAVE_NAS@ ++HAVE_GCONFTOOL = @HAVE_GCONFTOOL@ ++HAVE_ROM1394 = @HAVE_ROM1394@ ++HAVE_SPEEX = @HAVE_SPEEX@ + HAVE_X = @HAVE_X@ +-HAVE_X11 = @HAVE_X11@ ++HAVE_XSHM = @HAVE_XSHM@ ++HAVE_ZLIB = @HAVE_ZLIB@ + HTML_DIR = @HTML_DIR@ + INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ +@@ -287,62 +278,40 @@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + INTLLIBS = @INTLLIBS@ + INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +-IPTC_CFLAGS = @IPTC_CFLAGS@ +-IPTC_LIBS = @IPTC_LIBS@ +-JACK_CFLAGS = @JACK_CFLAGS@ +-JACK_LIBS = @JACK_LIBS@ +-JP2K_LIBS = @JP2K_LIBS@ +-KATE_CFLAGS = @KATE_CFLAGS@ +-KATE_LIBS = @KATE_LIBS@ ++JPEG_LIBS = @JPEG_LIBS@ + LD = @LD@ + LDFLAGS = @LDFLAGS@ +-LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@ +-LIBDC1394_LIBS = @LIBDC1394_LIBS@ +-LIBDIR = @LIBDIR@ ++LIBCACA_CFLAGS = @LIBCACA_CFLAGS@ ++LIBCACA_CONFIG = @LIBCACA_CONFIG@ ++LIBCACA_LIBS = @LIBCACA_LIBS@ ++LIBDV_CFLAGS = @LIBDV_CFLAGS@ ++LIBDV_LIBS = @LIBDV_LIBS@ + LIBICONV = @LIBICONV@ ++LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@ ++LIBIEC61883_LIBS = @LIBIEC61883_LIBS@ + LIBINTL = @LIBINTL@ + LIBM = @LIBM@ +-LIBMMS_CFLAGS = @LIBMMS_CFLAGS@ +-LIBMMS_LIBS = @LIBMMS_LIBS@ + LIBOBJS = @LIBOBJS@ + LIBOIL_CFLAGS = @LIBOIL_CFLAGS@ + LIBOIL_LIBS = @LIBOIL_LIBS@ ++LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ ++LIBPNG_LIBS = @LIBPNG_LIBS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ ++LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ ++LIBV4L2_LIBS = @LIBV4L2_LIBS@ + LIPO = @LIPO@ + LN_S = @LN_S@ + LOCALEDIR = @LOCALEDIR@ +-LRDF_CFLAGS = @LRDF_CFLAGS@ +-LRDF_LIBS = @LRDF_LIBS@ + LTLIBICONV = @LTLIBICONV@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ +-MAKEFLAGS = @MAKEFLAGS@ + MAKEINFO = @MAKEINFO@ +-METADATA_CFLAGS = @METADATA_CFLAGS@ +-METADATA_LIBS = @METADATA_LIBS@ +-MIMIC_CFLAGS = @MIMIC_CFLAGS@ +-MIMIC_LIBS = @MIMIC_LIBS@ +-MJPEG_CFLAGS = @MJPEG_CFLAGS@ +-MJPEG_LIBS = @MJPEG_LIBS@ + MKDIR_P = @MKDIR_P@ +-MODPLUG_CFLAGS = @MODPLUG_CFLAGS@ +-MODPLUG_LIBS = @MODPLUG_LIBS@ +-MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@ +-MPEG2ENC_LIBS = @MPEG2ENC_LIBS@ +-MPLEX_CFLAGS = @MPLEX_CFLAGS@ +-MPLEX_LIBS = @MPLEX_LIBS@ + MSGFMT = @MSGFMT@ + MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ +-MUSEPACK_LIBS = @MUSEPACK_LIBS@ +-MUSICBRAINZ_CFLAGS = @MUSICBRAINZ_CFLAGS@ +-MUSICBRAINZ_LIBS = @MUSICBRAINZ_LIBS@ +-NAS_CFLAGS = @NAS_CFLAGS@ +-NAS_LIBS = @NAS_LIBS@ +-NEON_CFLAGS = @NEON_CFLAGS@ +-NEON_LIBS = @NEON_LIBS@ + NM = @NM@ + NMEDIT = @NMEDIT@ + OBJC = @OBJC@ +@@ -350,9 +319,6 @@ + OBJC_LDFLAGS = @OBJC_LDFLAGS@ + OBJDUMP = @OBJDUMP@ + OBJEXT = @OBJEXT@ +-OFA_CFLAGS = @OFA_CFLAGS@ +-OFA_LIBS = @OFA_LIBS@ +-ORCC = @ORCC@ + OTOOL = @OTOOL@ + OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ +@@ -372,68 +338,64 @@ + PLUGINDIR = @PLUGINDIR@ + POSUB = @POSUB@ + PROFILE_CFLAGS = @PROFILE_CFLAGS@ ++PULSE_0_9_11_CFLAGS = @PULSE_0_9_11_CFLAGS@ ++PULSE_0_9_11_LIBS = @PULSE_0_9_11_LIBS@ ++PULSE_0_9_12_CFLAGS = @PULSE_0_9_12_CFLAGS@ ++PULSE_0_9_12_LIBS = @PULSE_0_9_12_LIBS@ ++PULSE_0_9_13_CFLAGS = @PULSE_0_9_13_CFLAGS@ ++PULSE_0_9_13_LIBS = @PULSE_0_9_13_LIBS@ ++PULSE_0_9_15_CFLAGS = @PULSE_0_9_15_CFLAGS@ ++PULSE_0_9_15_LIBS = @PULSE_0_9_15_LIBS@ ++PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@ ++PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@ ++PULSE_CFLAGS = @PULSE_CFLAGS@ ++PULSE_LIBS = @PULSE_LIBS@ + PYTHON = @PYTHON@ + PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ + PYTHON_PLATFORM = @PYTHON_PLATFORM@ + PYTHON_PREFIX = @PYTHON_PREFIX@ + PYTHON_VERSION = @PYTHON_VERSION@ +-Q = @Q@ + RANLIB = @RANLIB@ +-RSVG_CFLAGS = @RSVG_CFLAGS@ +-RSVG_LIBS = @RSVG_LIBS@ +-SCHRO_CFLAGS = @SCHRO_CFLAGS@ +-SCHRO_LIBS = @SCHRO_LIBS@ +-SDL_CFLAGS = @SDL_CFLAGS@ +-SDL_CONFIG = @SDL_CONFIG@ +-SDL_LIBS = @SDL_LIBS@ ++RAW1394_CFLAGS = @RAW1394_CFLAGS@ ++RAW1394_LIBS = @RAW1394_LIBS@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ +-SLV2_CFLAGS = @SLV2_CFLAGS@ +-SLV2_LIBS = @SLV2_LIBS@ +-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +-SNDFILE_LIBS = @SNDFILE_LIBS@ +-SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@ +-SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@ +-SPC_LIBS = @SPC_LIBS@ ++SHOUT2_CFLAGS = @SHOUT2_CFLAGS@ ++SHOUT2_LIBS = @SHOUT2_LIBS@ ++SOUP_CFLAGS = @SOUP_CFLAGS@ ++SOUP_LIBS = @SOUP_LIBS@ ++SPEEX_CFLAGS = @SPEEX_CFLAGS@ ++SPEEX_LIBS = @SPEEX_LIBS@ + STRIP = @STRIP@ +-SWFDEC_CFLAGS = @SWFDEC_CFLAGS@ +-SWFDEC_LIBS = @SWFDEC_LIBS@ +-THEORADEC_CFLAGS = @THEORADEC_CFLAGS@ +-THEORADEC_LIBS = @THEORADEC_LIBS@ +-TIGER_CFLAGS = @TIGER_CFLAGS@ +-TIGER_LIBS = @TIGER_LIBS@ +-TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@ +-TIMIDITY_LIBS = @TIMIDITY_LIBS@ ++TAGLIB_CFLAGS = @TAGLIB_CFLAGS@ ++TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@ ++TAGLIB_LIBS = @TAGLIB_LIBS@ + USE_NLS = @USE_NLS@ +-V = @V@ + VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ + VALGRIND_LIBS = @VALGRIND_LIBS@ + VALGRIND_PATH = @VALGRIND_PATH@ +-VDPAU_CFLAGS = @VDPAU_CFLAGS@ +-VDPAU_LIBS = @VDPAU_LIBS@ + VERSION = @VERSION@ +-WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@ +-WILDMIDI_LIBS = @WILDMIDI_LIBS@ ++WARNING_CFLAGS = @WARNING_CFLAGS@ ++WARNING_CXXFLAGS = @WARNING_CXXFLAGS@ ++WAVPACK_CFLAGS = @WAVPACK_CFLAGS@ ++WAVPACK_LIBS = @WAVPACK_LIBS@ + WIN32_LIBS = @WIN32_LIBS@ +-X11_CFLAGS = @X11_CFLAGS@ +-X11_LIBS = @X11_LIBS@ +-XDG_LIBS = @XDG_LIBS@ ++XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@ ++XDAMAGE_LIBS = @XDAMAGE_LIBS@ ++XFIXES_CFLAGS = @XFIXES_CFLAGS@ ++XFIXES_LIBS = @XFIXES_LIBS@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ + XMKMF = @XMKMF@ +-XMP_1_99_5_CFLAGS = @XMP_1_99_5_CFLAGS@ +-XMP_1_99_5_LIBS = @XMP_1_99_5_LIBS@ +-XMP_CFLAGS = @XMP_CFLAGS@ +-XMP_LIBS = @XMP_LIBS@ +-XVID_LIBS = @XVID_LIBS@ ++XSHM_LIBS = @XSHM_LIBS@ ++XVIDEO_LIBS = @XVIDEO_LIBS@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ZBAR_CFLAGS = @ZBAR_CFLAGS@ +-ZBAR_LIBS = @ZBAR_LIBS@ ++ZLIB_LIBS = @ZLIB_LIBS@ + abs_builddir = @abs_builddir@ + abs_srcdir = @abs_srcdir@ + abs_top_builddir = @abs_top_builddir@ +@@ -487,7 +449,6 @@ + pythondir = @pythondir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ +-shavedir = @shavedir@ + srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +@@ -513,9 +474,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/autoconvert/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu farsight/autoconvert/Makefile'; \ + $(am__cd) $(top_srcdir) && \ +- $(AUTOMAKE) --gnu gst/autoconvert/Makefile ++ $(AUTOMAKE) --gnu farsight/autoconvert/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -566,7 +527,7 @@ + rm -f "$${dir}/so_locations"; \ + done + libgstautoconvert.la: $(libgstautoconvert_la_OBJECTS) $(libgstautoconvert_la_DEPENDENCIES) +- $(libgstautoconvert_la_LINK) -rpath $(plugindir) $(libgstautoconvert_la_OBJECTS) $(libgstautoconvert_la_LIBADD) $(LIBS) ++ $(AM_V_CCLD)$(libgstautoconvert_la_LINK) -rpath $(plugindir) $(libgstautoconvert_la_OBJECTS) $(libgstautoconvert_la_LIBADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -577,32 +538,36 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstautoconvert_la-gstautoconvert.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + libgstautoconvert_la-gstautoconvert.lo: gstautoconvert.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstautoconvert_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstautoconvert_la_CFLAGS) $(CFLAGS) -MT libgstautoconvert_la-gstautoconvert.lo -MD -MP -MF $(DEPDIR)/libgstautoconvert_la-gstautoconvert.Tpo -c -o libgstautoconvert_la-gstautoconvert.lo `test -f 'gstautoconvert.c' || echo '$(srcdir)/'`gstautoconvert.c +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstautoconvert_la-gstautoconvert.Tpo $(DEPDIR)/libgstautoconvert_la-gstautoconvert.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstautoconvert_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstautoconvert_la_CFLAGS) $(CFLAGS) -MT libgstautoconvert_la-gstautoconvert.lo -MD -MP -MF $(DEPDIR)/libgstautoconvert_la-gstautoconvert.Tpo -c -o libgstautoconvert_la-gstautoconvert.lo `test -f 'gstautoconvert.c' || echo '$(srcdir)/'`gstautoconvert.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstautoconvert_la-gstautoconvert.Tpo $(DEPDIR)/libgstautoconvert_la-gstautoconvert.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstautoconvert.c' object='libgstautoconvert_la-gstautoconvert.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstautoconvert_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstautoconvert_la_CFLAGS) $(CFLAGS) -c -o libgstautoconvert_la-gstautoconvert.lo `test -f 'gstautoconvert.c' || echo '$(srcdir)/'`gstautoconvert.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstautoconvert_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstautoconvert_la_CFLAGS) $(CFLAGS) -c -o libgstautoconvert_la-gstautoconvert.lo `test -f 'gstautoconvert.c' || echo '$(srcdir)/'`gstautoconvert.c + + mostlyclean-libtool: + -rm -f *.lo +diff -Nur gst-plugins-good0.10-0.10.23.deb/farsight/dtmf/Makefile.in gst-plugins-good0.10-0.10.23/farsight/dtmf/Makefile.in +--- gst-plugins-good0.10-0.10.23.deb/farsight/dtmf/Makefile.in 2010-05-31 17:29:53.000000000 +0200 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/Makefile.in 2010-05-31 17:30:16.000000000 +0200 +@@ -35,13 +35,14 @@ + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ +-subdir = gst/dtmf ++subdir = farsight/dtmf + DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ + $(top_srcdir)/common/m4/as-auto-alt.m4 \ + $(top_srcdir)/common/m4/as-compiler-flag.m4 \ ++ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ + $(top_srcdir)/common/m4/as-objc.m4 \ + $(top_srcdir)/common/m4/as-python.m4 \ + $(top_srcdir)/common/m4/as-scrub-include.m4 \ +@@ -56,16 +57,15 @@ + $(top_srcdir)/common/m4/gst-feature.m4 \ + $(top_srcdir)/common/m4/gst-gettext.m4 \ + $(top_srcdir)/common/m4/gst-glib2.m4 \ +- $(top_srcdir)/common/m4/gst-platform.m4 \ + $(top_srcdir)/common/m4/gst-plugin-docs.m4 \ + $(top_srcdir)/common/m4/gst-plugindir.m4 \ + $(top_srcdir)/common/m4/gst-x11.m4 \ + $(top_srcdir)/common/m4/gst.m4 \ + $(top_srcdir)/common/m4/gtk-doc.m4 \ +- $(top_srcdir)/common/m4/pkg.m4 \ +- $(top_srcdir)/common/m4/shave.m4 $(top_srcdir)/m4/gettext.m4 \ +- $(top_srcdir)/m4/gst-alsa.m4 $(top_srcdir)/m4/gst-fionread.m4 \ +- $(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \ ++ $(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/aalib.m4 \ ++ $(top_srcdir)/m4/esd.m4 $(top_srcdir)/m4/gconf-2.m4 \ ++ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \ ++ $(top_srcdir)/m4/gst-shout2.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ +@@ -111,63 +111,69 @@ + libgstdtmf_la-gstrtpdtmfdepay.lo libgstdtmf_la-tone_detect.lo \ + libgstdtmf_la-gstdtmf.lo + libgstdtmf_la_OBJECTS = $(am_libgstdtmf_la_OBJECTS) +-libgstdtmf_la_LINK = $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) \ +- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libgstdtmf_la_CFLAGS) \ +- $(CFLAGS) $(libgstdtmf_la_LDFLAGS) $(LDFLAGS) -o $@ ++AM_V_lt = $(am__v_lt_$(V)) ++am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) ++am__v_lt_0 = --silent ++libgstdtmf_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ ++ $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ ++ $(CCLD) $(libgstdtmf_la_CFLAGS) $(CFLAGS) \ ++ $(libgstdtmf_la_LDFLAGS) $(LDFLAGS) -o $@ + DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles + am__mv = mv -f + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ ++ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ ++ $(AM_CFLAGS) $(CFLAGS) ++AM_V_CC = $(am__v_CC_$(V)) ++am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) ++am__v_CC_0 = @echo " CC " $@; ++AM_V_at = $(am__v_at_$(V)) ++am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) ++am__v_at_0 = @ + CCLD = $(CC) +-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ +- $(LDFLAGS) -o $@ ++LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++AM_V_CCLD = $(am__v_CCLD_$(V)) ++am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) ++am__v_CCLD_0 = @echo " CCLD " $@; ++AM_V_GEN = $(am__v_GEN_$(V)) ++am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) ++am__v_GEN_0 = @echo " GEN " $@; + SOURCES = $(libgstdtmf_la_SOURCES) + DIST_SOURCES = $(libgstdtmf_la_SOURCES) + HEADERS = $(noinst_HEADERS) + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++AALIB_CFLAGS = @AALIB_CFLAGS@ ++AALIB_CONFIG = @AALIB_CONFIG@ ++AALIB_LIBS = @AALIB_LIBS@ + ACLOCAL = @ACLOCAL@ + ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +-ACMENC_CFLAGS = @ACMENC_CFLAGS@ +-ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@ +-ALSA_CFLAGS = @ALSA_CFLAGS@ +-ALSA_LIBS = @ALSA_LIBS@ +-AMRWB_LIBS = @AMRWB_LIBS@ + AMTAR = @AMTAR@ +-AM_MAKEFLAGS = @AM_MAKEFLAGS@ +-APEXSINK_CFLAGS = @APEXSINK_CFLAGS@ +-APEXSINK_LIBS = @APEXSINK_LIBS@ ++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ++ANNODEX_CFLAGS = @ANNODEX_CFLAGS@ ++ANNODEX_LIBS = @ANNODEX_LIBS@ + AR = @AR@ + AS = @AS@ +-ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@ +-ASSRENDER_LIBS = @ASSRENDER_LIBS@ + AUTOCONF = @AUTOCONF@ + AUTOHEADER = @AUTOHEADER@ + AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + BZ2_LIBS = @BZ2_LIBS@ ++CAIRO_CFLAGS = @CAIRO_CFLAGS@ ++CAIRO_LIBS = @CAIRO_LIBS@ + CC = @CC@ ++CCAS = @CCAS@ ++CCASDEPMODE = @CCASDEPMODE@ + CCASFLAGS = @CCASFLAGS@ + CCDEPMODE = @CCDEPMODE@ +-CDAUDIO_CFLAGS = @CDAUDIO_CFLAGS@ +-CDAUDIO_CONFIG = @CDAUDIO_CONFIG@ +-CDAUDIO_LIBS = @CDAUDIO_LIBS@ +-CELT_0_5_CFLAGS = @CELT_0_5_CFLAGS@ +-CELT_0_5_LIBS = @CELT_0_5_LIBS@ +-CELT_0_7_CFLAGS = @CELT_0_7_CFLAGS@ +-CELT_0_7_LIBS = @CELT_0_7_LIBS@ +-CELT_CFLAGS = @CELT_CFLAGS@ +-CELT_LIBS = @CELT_LIBS@ + CFLAGS = @CFLAGS@ +-COG_CFLAGS = @COG_CFLAGS@ +-COG_LIBS = @COG_LIBS@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CXX = @CXX@ +@@ -175,7 +181,6 @@ + CXXDEPMODE = @CXXDEPMODE@ + CXXFLAGS = @CXXFLAGS@ + CYGPATH_W = @CYGPATH_W@ +-DCCP_LIBS = @DCCP_LIBS@ + DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@ + DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@ + DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@ +@@ -184,61 +189,47 @@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ + DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@ +-DIRAC_CFLAGS = @DIRAC_CFLAGS@ +-DIRAC_LIBS = @DIRAC_LIBS@ +-DIRECTDRAW_LIBS = @DIRECTDRAW_LIBS@ +-DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ +-DIRECTFB_LIBS = @DIRECTFB_LIBS@ ++DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@ ++DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@ + DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@ +-DIRECTX_CFLAGS = @DIRECTX_CFLAGS@ +-DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@ +-DIVXDEC_LIBS = @DIVXDEC_LIBS@ +-DIVXENC_LIBS = @DIVXENC_LIBS@ + DLLTOOL = @DLLTOOL@ + DSYMUTIL = @DSYMUTIL@ +-DTS_LIBS = @DTS_LIBS@ + DUMPBIN = @DUMPBIN@ +-DVDNAV_CFLAGS = @DVDNAV_CFLAGS@ +-DVDNAV_CONFIG = @DVDNAV_CONFIG@ +-DVDNAV_LIBS = @DVDNAV_LIBS@ ++DV1394_CFLAGS = @DV1394_CFLAGS@ ++DV1394_LIBS = @DV1394_LIBS@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + ERROR_CFLAGS = @ERROR_CFLAGS@ + ERROR_CXXFLAGS = @ERROR_CXXFLAGS@ ++ESD_CFLAGS = @ESD_CFLAGS@ ++ESD_CONFIG = @ESD_CONFIG@ ++ESD_LIBS = @ESD_LIBS@ + EXEEXT = @EXEEXT@ +-EXIF_CFLAGS = @EXIF_CFLAGS@ +-EXIF_LIBS = @EXIF_LIBS@ +-F77 = @F77@ +-FAAC_LIBS = @FAAC_LIBS@ +-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@ +-FAAD_LIBS = @FAAD_LIBS@ +-FC = @FC@ + FFLAGS = @FFLAGS@ + FGREP = @FGREP@ +-FLITE_CFLAGS = @FLITE_CFLAGS@ +-FLITE_LIBS = @FLITE_LIBS@ ++FLAC_CFLAGS = @FLAC_CFLAGS@ ++FLAC_LIBS = @FLAC_LIBS@ ++GCONFTOOL = @GCONFTOOL@ ++GCONF_CFLAGS = @GCONF_CFLAGS@ ++GCONF_LIBS = @GCONF_LIBS@ ++GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ ++GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ + GCOV = @GCOV@ + GCOV_CFLAGS = @GCOV_CFLAGS@ + GCOV_LIBS = @GCOV_LIBS@ ++GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ ++GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ + GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +-GIO_CFLAGS = @GIO_CFLAGS@ +-GIO_LIBS = @GIO_LIBS@ + GLIB_CFLAGS = @GLIB_CFLAGS@ + GLIB_LIBS = @GLIB_LIBS@ + GLIB_PREFIX = @GLIB_PREFIX@ + GLIB_REQ = @GLIB_REQ@ +-GME_LIBS = @GME_LIBS@ +-GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@ +-GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@ + GMSGFMT = @GMSGFMT@ + GMSGFMT_015 = @GMSGFMT_015@ +-GMYTH_CFLAGS = @GMYTH_CFLAGS@ +-GMYTH_LIBS = @GMYTH_LIBS@ + GREP = @GREP@ +-GSM_LIBS = @GSM_LIBS@ + GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@ + GSTPB_PREFIX = @GSTPB_PREFIX@ + GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@ +@@ -255,6 +246,7 @@ + GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@ + GST_LIBS = @GST_LIBS@ + GST_LICENSE = @GST_LICENSE@ ++GST_LT_LDFLAGS = @GST_LT_LDFLAGS@ + GST_MAJORMINOR = @GST_MAJORMINOR@ + GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@ + GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@ +@@ -271,20 +263,20 @@ + GTKDOC_CHECK = @GTKDOC_CHECK@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_AMRWB = @HAVE_AMRWB@ ++GUDEV_CFLAGS = @GUDEV_CFLAGS@ ++GUDEV_LIBS = @GUDEV_LIBS@ ++HAL_CFLAGS = @HAL_CFLAGS@ ++HAL_LIBS = @HAL_LIBS@ ++HAVE_AVC1394 = @HAVE_AVC1394@ + HAVE_BZ2 = @HAVE_BZ2@ + HAVE_CXX = @HAVE_CXX@ +-HAVE_DIRECTDRAW = @HAVE_DIRECTDRAW@ + HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@ +-HAVE_DTS = @HAVE_DTS@ +-HAVE_FAAC = @HAVE_FAAC@ +-HAVE_FAAD = @HAVE_FAAD@ +-HAVE_FLITE = @HAVE_FLITE@ +-HAVE_GSM = @HAVE_GSM@ +-HAVE_JP2K = @HAVE_JP2K@ +-HAVE_NAS = @HAVE_NAS@ ++HAVE_GCONFTOOL = @HAVE_GCONFTOOL@ ++HAVE_ROM1394 = @HAVE_ROM1394@ ++HAVE_SPEEX = @HAVE_SPEEX@ + HAVE_X = @HAVE_X@ +-HAVE_X11 = @HAVE_X11@ ++HAVE_XSHM = @HAVE_XSHM@ ++HAVE_ZLIB = @HAVE_ZLIB@ + HTML_DIR = @HTML_DIR@ + INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ +@@ -293,62 +285,40 @@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + INTLLIBS = @INTLLIBS@ + INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +-IPTC_CFLAGS = @IPTC_CFLAGS@ +-IPTC_LIBS = @IPTC_LIBS@ +-JACK_CFLAGS = @JACK_CFLAGS@ +-JACK_LIBS = @JACK_LIBS@ +-JP2K_LIBS = @JP2K_LIBS@ +-KATE_CFLAGS = @KATE_CFLAGS@ +-KATE_LIBS = @KATE_LIBS@ ++JPEG_LIBS = @JPEG_LIBS@ + LD = @LD@ + LDFLAGS = @LDFLAGS@ +-LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@ +-LIBDC1394_LIBS = @LIBDC1394_LIBS@ +-LIBDIR = @LIBDIR@ ++LIBCACA_CFLAGS = @LIBCACA_CFLAGS@ ++LIBCACA_CONFIG = @LIBCACA_CONFIG@ ++LIBCACA_LIBS = @LIBCACA_LIBS@ ++LIBDV_CFLAGS = @LIBDV_CFLAGS@ ++LIBDV_LIBS = @LIBDV_LIBS@ + LIBICONV = @LIBICONV@ ++LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@ ++LIBIEC61883_LIBS = @LIBIEC61883_LIBS@ + LIBINTL = @LIBINTL@ + LIBM = @LIBM@ +-LIBMMS_CFLAGS = @LIBMMS_CFLAGS@ +-LIBMMS_LIBS = @LIBMMS_LIBS@ + LIBOBJS = @LIBOBJS@ + LIBOIL_CFLAGS = @LIBOIL_CFLAGS@ + LIBOIL_LIBS = @LIBOIL_LIBS@ ++LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ ++LIBPNG_LIBS = @LIBPNG_LIBS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ ++LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ ++LIBV4L2_LIBS = @LIBV4L2_LIBS@ + LIPO = @LIPO@ + LN_S = @LN_S@ + LOCALEDIR = @LOCALEDIR@ +-LRDF_CFLAGS = @LRDF_CFLAGS@ +-LRDF_LIBS = @LRDF_LIBS@ + LTLIBICONV = @LTLIBICONV@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ +-MAKEFLAGS = @MAKEFLAGS@ + MAKEINFO = @MAKEINFO@ +-METADATA_CFLAGS = @METADATA_CFLAGS@ +-METADATA_LIBS = @METADATA_LIBS@ +-MIMIC_CFLAGS = @MIMIC_CFLAGS@ +-MIMIC_LIBS = @MIMIC_LIBS@ +-MJPEG_CFLAGS = @MJPEG_CFLAGS@ +-MJPEG_LIBS = @MJPEG_LIBS@ + MKDIR_P = @MKDIR_P@ +-MODPLUG_CFLAGS = @MODPLUG_CFLAGS@ +-MODPLUG_LIBS = @MODPLUG_LIBS@ +-MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@ +-MPEG2ENC_LIBS = @MPEG2ENC_LIBS@ +-MPLEX_CFLAGS = @MPLEX_CFLAGS@ +-MPLEX_LIBS = @MPLEX_LIBS@ + MSGFMT = @MSGFMT@ + MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ +-MUSEPACK_LIBS = @MUSEPACK_LIBS@ +-MUSICBRAINZ_CFLAGS = @MUSICBRAINZ_CFLAGS@ +-MUSICBRAINZ_LIBS = @MUSICBRAINZ_LIBS@ +-NAS_CFLAGS = @NAS_CFLAGS@ +-NAS_LIBS = @NAS_LIBS@ +-NEON_CFLAGS = @NEON_CFLAGS@ +-NEON_LIBS = @NEON_LIBS@ + NM = @NM@ + NMEDIT = @NMEDIT@ + OBJC = @OBJC@ +@@ -356,9 +326,6 @@ + OBJC_LDFLAGS = @OBJC_LDFLAGS@ + OBJDUMP = @OBJDUMP@ + OBJEXT = @OBJEXT@ +-OFA_CFLAGS = @OFA_CFLAGS@ +-OFA_LIBS = @OFA_LIBS@ +-ORCC = @ORCC@ + OTOOL = @OTOOL@ + OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ +@@ -378,68 +345,64 @@ + PLUGINDIR = @PLUGINDIR@ + POSUB = @POSUB@ + PROFILE_CFLAGS = @PROFILE_CFLAGS@ ++PULSE_0_9_11_CFLAGS = @PULSE_0_9_11_CFLAGS@ ++PULSE_0_9_11_LIBS = @PULSE_0_9_11_LIBS@ ++PULSE_0_9_12_CFLAGS = @PULSE_0_9_12_CFLAGS@ ++PULSE_0_9_12_LIBS = @PULSE_0_9_12_LIBS@ ++PULSE_0_9_13_CFLAGS = @PULSE_0_9_13_CFLAGS@ ++PULSE_0_9_13_LIBS = @PULSE_0_9_13_LIBS@ ++PULSE_0_9_15_CFLAGS = @PULSE_0_9_15_CFLAGS@ ++PULSE_0_9_15_LIBS = @PULSE_0_9_15_LIBS@ ++PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@ ++PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@ ++PULSE_CFLAGS = @PULSE_CFLAGS@ ++PULSE_LIBS = @PULSE_LIBS@ + PYTHON = @PYTHON@ + PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ + PYTHON_PLATFORM = @PYTHON_PLATFORM@ + PYTHON_PREFIX = @PYTHON_PREFIX@ + PYTHON_VERSION = @PYTHON_VERSION@ +-Q = @Q@ + RANLIB = @RANLIB@ +-RSVG_CFLAGS = @RSVG_CFLAGS@ +-RSVG_LIBS = @RSVG_LIBS@ +-SCHRO_CFLAGS = @SCHRO_CFLAGS@ +-SCHRO_LIBS = @SCHRO_LIBS@ +-SDL_CFLAGS = @SDL_CFLAGS@ +-SDL_CONFIG = @SDL_CONFIG@ +-SDL_LIBS = @SDL_LIBS@ ++RAW1394_CFLAGS = @RAW1394_CFLAGS@ ++RAW1394_LIBS = @RAW1394_LIBS@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ +-SLV2_CFLAGS = @SLV2_CFLAGS@ +-SLV2_LIBS = @SLV2_LIBS@ +-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +-SNDFILE_LIBS = @SNDFILE_LIBS@ +-SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@ +-SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@ +-SPC_LIBS = @SPC_LIBS@ ++SHOUT2_CFLAGS = @SHOUT2_CFLAGS@ ++SHOUT2_LIBS = @SHOUT2_LIBS@ ++SOUP_CFLAGS = @SOUP_CFLAGS@ ++SOUP_LIBS = @SOUP_LIBS@ ++SPEEX_CFLAGS = @SPEEX_CFLAGS@ ++SPEEX_LIBS = @SPEEX_LIBS@ + STRIP = @STRIP@ +-SWFDEC_CFLAGS = @SWFDEC_CFLAGS@ +-SWFDEC_LIBS = @SWFDEC_LIBS@ +-THEORADEC_CFLAGS = @THEORADEC_CFLAGS@ +-THEORADEC_LIBS = @THEORADEC_LIBS@ +-TIGER_CFLAGS = @TIGER_CFLAGS@ +-TIGER_LIBS = @TIGER_LIBS@ +-TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@ +-TIMIDITY_LIBS = @TIMIDITY_LIBS@ ++TAGLIB_CFLAGS = @TAGLIB_CFLAGS@ ++TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@ ++TAGLIB_LIBS = @TAGLIB_LIBS@ + USE_NLS = @USE_NLS@ +-V = @V@ + VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ + VALGRIND_LIBS = @VALGRIND_LIBS@ + VALGRIND_PATH = @VALGRIND_PATH@ +-VDPAU_CFLAGS = @VDPAU_CFLAGS@ +-VDPAU_LIBS = @VDPAU_LIBS@ + VERSION = @VERSION@ +-WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@ +-WILDMIDI_LIBS = @WILDMIDI_LIBS@ ++WARNING_CFLAGS = @WARNING_CFLAGS@ ++WARNING_CXXFLAGS = @WARNING_CXXFLAGS@ ++WAVPACK_CFLAGS = @WAVPACK_CFLAGS@ ++WAVPACK_LIBS = @WAVPACK_LIBS@ + WIN32_LIBS = @WIN32_LIBS@ +-X11_CFLAGS = @X11_CFLAGS@ +-X11_LIBS = @X11_LIBS@ +-XDG_LIBS = @XDG_LIBS@ ++XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@ ++XDAMAGE_LIBS = @XDAMAGE_LIBS@ ++XFIXES_CFLAGS = @XFIXES_CFLAGS@ ++XFIXES_LIBS = @XFIXES_LIBS@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ + XMKMF = @XMKMF@ +-XMP_1_99_5_CFLAGS = @XMP_1_99_5_CFLAGS@ +-XMP_1_99_5_LIBS = @XMP_1_99_5_LIBS@ +-XMP_CFLAGS = @XMP_CFLAGS@ +-XMP_LIBS = @XMP_LIBS@ +-XVID_LIBS = @XVID_LIBS@ ++XSHM_LIBS = @XSHM_LIBS@ ++XVIDEO_LIBS = @XVIDEO_LIBS@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ZBAR_CFLAGS = @ZBAR_CFLAGS@ +-ZBAR_LIBS = @ZBAR_LIBS@ ++ZLIB_LIBS = @ZLIB_LIBS@ + abs_builddir = @abs_builddir@ + abs_srcdir = @abs_srcdir@ + abs_top_builddir = @abs_top_builddir@ +@@ -493,7 +456,6 @@ + pythondir = @pythondir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ +-shavedir = @shavedir@ + srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +@@ -536,9 +498,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/dtmf/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu farsight/dtmf/Makefile'; \ + $(am__cd) $(top_srcdir) && \ +- $(AUTOMAKE) --gnu gst/dtmf/Makefile ++ $(AUTOMAKE) --gnu farsight/dtmf/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -589,7 +551,7 @@ + rm -f "$${dir}/so_locations"; \ + done + libgstdtmf.la: $(libgstdtmf_la_OBJECTS) $(libgstdtmf_la_DEPENDENCIES) +- $(libgstdtmf_la_LINK) -rpath $(plugindir) $(libgstdtmf_la_OBJECTS) $(libgstdtmf_la_LIBADD) $(LIBS) ++ $(AM_V_CCLD)$(libgstdtmf_la_LINK) -rpath $(plugindir) $(libgstdtmf_la_OBJECTS) $(libgstdtmf_la_LIBADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -605,67 +567,76 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdtmf_la-tone_detect.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + libgstdtmf_la-gstdtmfsrc.lo: gstdtmfsrc.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstdtmfsrc.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Tpo -c -o libgstdtmf_la-gstdtmfsrc.lo `test -f 'gstdtmfsrc.c' || echo '$(srcdir)/'`gstdtmfsrc.c +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Tpo $(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstdtmfsrc.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Tpo -c -o libgstdtmf_la-gstdtmfsrc.lo `test -f 'gstdtmfsrc.c' || echo '$(srcdir)/'`gstdtmfsrc.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Tpo $(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstdtmfsrc.c' object='libgstdtmf_la-gstdtmfsrc.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstdtmfsrc.lo `test -f 'gstdtmfsrc.c' || echo '$(srcdir)/'`gstdtmfsrc.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstdtmfsrc.lo `test -f 'gstdtmfsrc.c' || echo '$(srcdir)/'`gstdtmfsrc.c + + libgstdtmf_la-gstdtmfdetect.lo: gstdtmfdetect.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstdtmfdetect.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstdtmfdetect.Tpo -c -o libgstdtmf_la-gstdtmfdetect.lo `test -f 'gstdtmfdetect.c' || echo '$(srcdir)/'`gstdtmfdetect.c +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstdtmf_la-gstdtmfdetect.Tpo $(DEPDIR)/libgstdtmf_la-gstdtmfdetect.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstdtmfdetect.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstdtmfdetect.Tpo -c -o libgstdtmf_la-gstdtmfdetect.lo `test -f 'gstdtmfdetect.c' || echo '$(srcdir)/'`gstdtmfdetect.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdtmf_la-gstdtmfdetect.Tpo $(DEPDIR)/libgstdtmf_la-gstdtmfdetect.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstdtmfdetect.c' object='libgstdtmf_la-gstdtmfdetect.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstdtmfdetect.lo `test -f 'gstdtmfdetect.c' || echo '$(srcdir)/'`gstdtmfdetect.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstdtmfdetect.lo `test -f 'gstdtmfdetect.c' || echo '$(srcdir)/'`gstdtmfdetect.c + + libgstdtmf_la-gstrtpdtmfsrc.lo: gstrtpdtmfsrc.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstrtpdtmfsrc.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Tpo -c -o libgstdtmf_la-gstrtpdtmfsrc.lo `test -f 'gstrtpdtmfsrc.c' || echo '$(srcdir)/'`gstrtpdtmfsrc.c +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Tpo $(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstrtpdtmfsrc.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Tpo -c -o libgstdtmf_la-gstrtpdtmfsrc.lo `test -f 'gstrtpdtmfsrc.c' || echo '$(srcdir)/'`gstrtpdtmfsrc.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Tpo $(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstrtpdtmfsrc.c' object='libgstdtmf_la-gstrtpdtmfsrc.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstrtpdtmfsrc.lo `test -f 'gstrtpdtmfsrc.c' || echo '$(srcdir)/'`gstrtpdtmfsrc.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstrtpdtmfsrc.lo `test -f 'gstrtpdtmfsrc.c' || echo '$(srcdir)/'`gstrtpdtmfsrc.c + + libgstdtmf_la-gstrtpdtmfdepay.lo: gstrtpdtmfdepay.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstrtpdtmfdepay.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Tpo -c -o libgstdtmf_la-gstrtpdtmfdepay.lo `test -f 'gstrtpdtmfdepay.c' || echo '$(srcdir)/'`gstrtpdtmfdepay.c +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Tpo $(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstrtpdtmfdepay.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Tpo -c -o libgstdtmf_la-gstrtpdtmfdepay.lo `test -f 'gstrtpdtmfdepay.c' || echo '$(srcdir)/'`gstrtpdtmfdepay.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Tpo $(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstrtpdtmfdepay.c' object='libgstdtmf_la-gstrtpdtmfdepay.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstrtpdtmfdepay.lo `test -f 'gstrtpdtmfdepay.c' || echo '$(srcdir)/'`gstrtpdtmfdepay.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstrtpdtmfdepay.lo `test -f 'gstrtpdtmfdepay.c' || echo '$(srcdir)/'`gstrtpdtmfdepay.c + + libgstdtmf_la-tone_detect.lo: tone_detect.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-tone_detect.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-tone_detect.Tpo -c -o libgstdtmf_la-tone_detect.lo `test -f 'tone_detect.c' || echo '$(srcdir)/'`tone_detect.c +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstdtmf_la-tone_detect.Tpo $(DEPDIR)/libgstdtmf_la-tone_detect.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-tone_detect.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-tone_detect.Tpo -c -o libgstdtmf_la-tone_detect.lo `test -f 'tone_detect.c' || echo '$(srcdir)/'`tone_detect.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdtmf_la-tone_detect.Tpo $(DEPDIR)/libgstdtmf_la-tone_detect.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tone_detect.c' object='libgstdtmf_la-tone_detect.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-tone_detect.lo `test -f 'tone_detect.c' || echo '$(srcdir)/'`tone_detect.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-tone_detect.lo `test -f 'tone_detect.c' || echo '$(srcdir)/'`tone_detect.c + + libgstdtmf_la-gstdtmf.lo: gstdtmf.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstdtmf.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstdtmf.Tpo -c -o libgstdtmf_la-gstdtmf.lo `test -f 'gstdtmf.c' || echo '$(srcdir)/'`gstdtmf.c +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstdtmf_la-gstdtmf.Tpo $(DEPDIR)/libgstdtmf_la-gstdtmf.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstdtmf.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstdtmf.Tpo -c -o libgstdtmf_la-gstdtmf.lo `test -f 'gstdtmf.c' || echo '$(srcdir)/'`gstdtmf.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdtmf_la-gstdtmf.Tpo $(DEPDIR)/libgstdtmf_la-gstdtmf.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstdtmf.c' object='libgstdtmf_la-gstdtmf.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstdtmf.lo `test -f 'gstdtmf.c' || echo '$(srcdir)/'`gstdtmf.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstdtmf.lo `test -f 'gstdtmf.c' || echo '$(srcdir)/'`gstdtmf.c + + mostlyclean-libtool: + -rm -f *.lo +diff -Nur gst-plugins-good0.10-0.10.23.deb/farsight/liveadder/Makefile.in gst-plugins-good0.10-0.10.23/farsight/liveadder/Makefile.in +--- gst-plugins-good0.10-0.10.23.deb/farsight/liveadder/Makefile.in 2010-05-31 17:29:53.000000000 +0200 ++++ gst-plugins-good0.10-0.10.23/farsight/liveadder/Makefile.in 2010-05-31 17:30:16.000000000 +0200 +@@ -35,13 +35,14 @@ + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ +-subdir = gst/liveadder ++subdir = farsight/liveadder + DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ + $(top_srcdir)/common/m4/as-auto-alt.m4 \ + $(top_srcdir)/common/m4/as-compiler-flag.m4 \ ++ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ + $(top_srcdir)/common/m4/as-objc.m4 \ + $(top_srcdir)/common/m4/as-python.m4 \ + $(top_srcdir)/common/m4/as-scrub-include.m4 \ +@@ -56,16 +57,15 @@ + $(top_srcdir)/common/m4/gst-feature.m4 \ + $(top_srcdir)/common/m4/gst-gettext.m4 \ + $(top_srcdir)/common/m4/gst-glib2.m4 \ +- $(top_srcdir)/common/m4/gst-platform.m4 \ + $(top_srcdir)/common/m4/gst-plugin-docs.m4 \ + $(top_srcdir)/common/m4/gst-plugindir.m4 \ + $(top_srcdir)/common/m4/gst-x11.m4 \ + $(top_srcdir)/common/m4/gst.m4 \ + $(top_srcdir)/common/m4/gtk-doc.m4 \ +- $(top_srcdir)/common/m4/pkg.m4 \ +- $(top_srcdir)/common/m4/shave.m4 $(top_srcdir)/m4/gettext.m4 \ +- $(top_srcdir)/m4/gst-alsa.m4 $(top_srcdir)/m4/gst-fionread.m4 \ +- $(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \ ++ $(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/aalib.m4 \ ++ $(top_srcdir)/m4/esd.m4 $(top_srcdir)/m4/gconf-2.m4 \ ++ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \ ++ $(top_srcdir)/m4/gst-shout2.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ +@@ -107,7 +107,10 @@ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) + am_libgstliveadder_la_OBJECTS = libgstliveadder_la-liveadder.lo + libgstliveadder_la_OBJECTS = $(am_libgstliveadder_la_OBJECTS) +-libgstliveadder_la_LINK = $(LIBTOOL) --tag=CC \ ++AM_V_lt = $(am__v_lt_$(V)) ++am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) ++am__v_lt_0 = --silent ++libgstliveadder_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(libgstliveadder_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(libgstliveadder_la_CFLAGS) $(CFLAGS) \ + $(libgstliveadder_la_LDFLAGS) $(LDFLAGS) -o $@ +@@ -117,54 +120,56 @@ + am__mv = mv -f + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ ++ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ ++ $(AM_CFLAGS) $(CFLAGS) ++AM_V_CC = $(am__v_CC_$(V)) ++am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) ++am__v_CC_0 = @echo " CC " $@; ++AM_V_at = $(am__v_at_$(V)) ++am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) ++am__v_at_0 = @ + CCLD = $(CC) +-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ +- $(LDFLAGS) -o $@ ++LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++AM_V_CCLD = $(am__v_CCLD_$(V)) ++am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) ++am__v_CCLD_0 = @echo " CCLD " $@; ++AM_V_GEN = $(am__v_GEN_$(V)) ++am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) ++am__v_GEN_0 = @echo " GEN " $@; + SOURCES = $(libgstliveadder_la_SOURCES) + DIST_SOURCES = $(libgstliveadder_la_SOURCES) + HEADERS = $(noinst_HEADERS) + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++AALIB_CFLAGS = @AALIB_CFLAGS@ ++AALIB_CONFIG = @AALIB_CONFIG@ ++AALIB_LIBS = @AALIB_LIBS@ + ACLOCAL = @ACLOCAL@ + ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +-ACMENC_CFLAGS = @ACMENC_CFLAGS@ +-ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@ +-ALSA_CFLAGS = @ALSA_CFLAGS@ +-ALSA_LIBS = @ALSA_LIBS@ +-AMRWB_LIBS = @AMRWB_LIBS@ + AMTAR = @AMTAR@ +-AM_MAKEFLAGS = @AM_MAKEFLAGS@ +-APEXSINK_CFLAGS = @APEXSINK_CFLAGS@ +-APEXSINK_LIBS = @APEXSINK_LIBS@ ++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ++ANNODEX_CFLAGS = @ANNODEX_CFLAGS@ ++ANNODEX_LIBS = @ANNODEX_LIBS@ + AR = @AR@ + AS = @AS@ +-ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@ +-ASSRENDER_LIBS = @ASSRENDER_LIBS@ + AUTOCONF = @AUTOCONF@ + AUTOHEADER = @AUTOHEADER@ + AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + BZ2_LIBS = @BZ2_LIBS@ ++CAIRO_CFLAGS = @CAIRO_CFLAGS@ ++CAIRO_LIBS = @CAIRO_LIBS@ + CC = @CC@ ++CCAS = @CCAS@ ++CCASDEPMODE = @CCASDEPMODE@ + CCASFLAGS = @CCASFLAGS@ + CCDEPMODE = @CCDEPMODE@ +-CDAUDIO_CFLAGS = @CDAUDIO_CFLAGS@ +-CDAUDIO_CONFIG = @CDAUDIO_CONFIG@ +-CDAUDIO_LIBS = @CDAUDIO_LIBS@ +-CELT_0_5_CFLAGS = @CELT_0_5_CFLAGS@ +-CELT_0_5_LIBS = @CELT_0_5_LIBS@ +-CELT_0_7_CFLAGS = @CELT_0_7_CFLAGS@ +-CELT_0_7_LIBS = @CELT_0_7_LIBS@ +-CELT_CFLAGS = @CELT_CFLAGS@ +-CELT_LIBS = @CELT_LIBS@ + CFLAGS = @CFLAGS@ +-COG_CFLAGS = @COG_CFLAGS@ +-COG_LIBS = @COG_LIBS@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CXX = @CXX@ +@@ -172,7 +177,6 @@ + CXXDEPMODE = @CXXDEPMODE@ + CXXFLAGS = @CXXFLAGS@ + CYGPATH_W = @CYGPATH_W@ +-DCCP_LIBS = @DCCP_LIBS@ + DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@ + DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@ + DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@ +@@ -181,61 +185,47 @@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ + DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@ +-DIRAC_CFLAGS = @DIRAC_CFLAGS@ +-DIRAC_LIBS = @DIRAC_LIBS@ +-DIRECTDRAW_LIBS = @DIRECTDRAW_LIBS@ +-DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ +-DIRECTFB_LIBS = @DIRECTFB_LIBS@ ++DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@ ++DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@ + DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@ +-DIRECTX_CFLAGS = @DIRECTX_CFLAGS@ +-DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@ +-DIVXDEC_LIBS = @DIVXDEC_LIBS@ +-DIVXENC_LIBS = @DIVXENC_LIBS@ + DLLTOOL = @DLLTOOL@ + DSYMUTIL = @DSYMUTIL@ +-DTS_LIBS = @DTS_LIBS@ + DUMPBIN = @DUMPBIN@ +-DVDNAV_CFLAGS = @DVDNAV_CFLAGS@ +-DVDNAV_CONFIG = @DVDNAV_CONFIG@ +-DVDNAV_LIBS = @DVDNAV_LIBS@ ++DV1394_CFLAGS = @DV1394_CFLAGS@ ++DV1394_LIBS = @DV1394_LIBS@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + ERROR_CFLAGS = @ERROR_CFLAGS@ + ERROR_CXXFLAGS = @ERROR_CXXFLAGS@ ++ESD_CFLAGS = @ESD_CFLAGS@ ++ESD_CONFIG = @ESD_CONFIG@ ++ESD_LIBS = @ESD_LIBS@ + EXEEXT = @EXEEXT@ +-EXIF_CFLAGS = @EXIF_CFLAGS@ +-EXIF_LIBS = @EXIF_LIBS@ +-F77 = @F77@ +-FAAC_LIBS = @FAAC_LIBS@ +-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@ +-FAAD_LIBS = @FAAD_LIBS@ +-FC = @FC@ + FFLAGS = @FFLAGS@ + FGREP = @FGREP@ +-FLITE_CFLAGS = @FLITE_CFLAGS@ +-FLITE_LIBS = @FLITE_LIBS@ ++FLAC_CFLAGS = @FLAC_CFLAGS@ ++FLAC_LIBS = @FLAC_LIBS@ ++GCONFTOOL = @GCONFTOOL@ ++GCONF_CFLAGS = @GCONF_CFLAGS@ ++GCONF_LIBS = @GCONF_LIBS@ ++GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ ++GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ + GCOV = @GCOV@ + GCOV_CFLAGS = @GCOV_CFLAGS@ + GCOV_LIBS = @GCOV_LIBS@ ++GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ ++GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ + GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +-GIO_CFLAGS = @GIO_CFLAGS@ +-GIO_LIBS = @GIO_LIBS@ + GLIB_CFLAGS = @GLIB_CFLAGS@ + GLIB_LIBS = @GLIB_LIBS@ + GLIB_PREFIX = @GLIB_PREFIX@ + GLIB_REQ = @GLIB_REQ@ +-GME_LIBS = @GME_LIBS@ +-GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@ +-GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@ + GMSGFMT = @GMSGFMT@ + GMSGFMT_015 = @GMSGFMT_015@ +-GMYTH_CFLAGS = @GMYTH_CFLAGS@ +-GMYTH_LIBS = @GMYTH_LIBS@ + GREP = @GREP@ +-GSM_LIBS = @GSM_LIBS@ + GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@ + GSTPB_PREFIX = @GSTPB_PREFIX@ + GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@ +@@ -252,6 +242,7 @@ + GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@ + GST_LIBS = @GST_LIBS@ + GST_LICENSE = @GST_LICENSE@ ++GST_LT_LDFLAGS = @GST_LT_LDFLAGS@ + GST_MAJORMINOR = @GST_MAJORMINOR@ + GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@ + GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@ +@@ -268,20 +259,20 @@ + GTKDOC_CHECK = @GTKDOC_CHECK@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_AMRWB = @HAVE_AMRWB@ ++GUDEV_CFLAGS = @GUDEV_CFLAGS@ ++GUDEV_LIBS = @GUDEV_LIBS@ ++HAL_CFLAGS = @HAL_CFLAGS@ ++HAL_LIBS = @HAL_LIBS@ ++HAVE_AVC1394 = @HAVE_AVC1394@ + HAVE_BZ2 = @HAVE_BZ2@ + HAVE_CXX = @HAVE_CXX@ +-HAVE_DIRECTDRAW = @HAVE_DIRECTDRAW@ + HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@ +-HAVE_DTS = @HAVE_DTS@ +-HAVE_FAAC = @HAVE_FAAC@ +-HAVE_FAAD = @HAVE_FAAD@ +-HAVE_FLITE = @HAVE_FLITE@ +-HAVE_GSM = @HAVE_GSM@ +-HAVE_JP2K = @HAVE_JP2K@ +-HAVE_NAS = @HAVE_NAS@ ++HAVE_GCONFTOOL = @HAVE_GCONFTOOL@ ++HAVE_ROM1394 = @HAVE_ROM1394@ ++HAVE_SPEEX = @HAVE_SPEEX@ + HAVE_X = @HAVE_X@ +-HAVE_X11 = @HAVE_X11@ ++HAVE_XSHM = @HAVE_XSHM@ ++HAVE_ZLIB = @HAVE_ZLIB@ + HTML_DIR = @HTML_DIR@ + INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ +@@ -290,62 +281,40 @@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + INTLLIBS = @INTLLIBS@ + INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +-IPTC_CFLAGS = @IPTC_CFLAGS@ +-IPTC_LIBS = @IPTC_LIBS@ +-JACK_CFLAGS = @JACK_CFLAGS@ +-JACK_LIBS = @JACK_LIBS@ +-JP2K_LIBS = @JP2K_LIBS@ +-KATE_CFLAGS = @KATE_CFLAGS@ +-KATE_LIBS = @KATE_LIBS@ ++JPEG_LIBS = @JPEG_LIBS@ + LD = @LD@ + LDFLAGS = @LDFLAGS@ +-LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@ +-LIBDC1394_LIBS = @LIBDC1394_LIBS@ +-LIBDIR = @LIBDIR@ ++LIBCACA_CFLAGS = @LIBCACA_CFLAGS@ ++LIBCACA_CONFIG = @LIBCACA_CONFIG@ ++LIBCACA_LIBS = @LIBCACA_LIBS@ ++LIBDV_CFLAGS = @LIBDV_CFLAGS@ ++LIBDV_LIBS = @LIBDV_LIBS@ + LIBICONV = @LIBICONV@ ++LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@ ++LIBIEC61883_LIBS = @LIBIEC61883_LIBS@ + LIBINTL = @LIBINTL@ + LIBM = @LIBM@ +-LIBMMS_CFLAGS = @LIBMMS_CFLAGS@ +-LIBMMS_LIBS = @LIBMMS_LIBS@ + LIBOBJS = @LIBOBJS@ + LIBOIL_CFLAGS = @LIBOIL_CFLAGS@ + LIBOIL_LIBS = @LIBOIL_LIBS@ ++LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ ++LIBPNG_LIBS = @LIBPNG_LIBS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ ++LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ ++LIBV4L2_LIBS = @LIBV4L2_LIBS@ + LIPO = @LIPO@ + LN_S = @LN_S@ + LOCALEDIR = @LOCALEDIR@ +-LRDF_CFLAGS = @LRDF_CFLAGS@ +-LRDF_LIBS = @LRDF_LIBS@ + LTLIBICONV = @LTLIBICONV@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ +-MAKEFLAGS = @MAKEFLAGS@ + MAKEINFO = @MAKEINFO@ +-METADATA_CFLAGS = @METADATA_CFLAGS@ +-METADATA_LIBS = @METADATA_LIBS@ +-MIMIC_CFLAGS = @MIMIC_CFLAGS@ +-MIMIC_LIBS = @MIMIC_LIBS@ +-MJPEG_CFLAGS = @MJPEG_CFLAGS@ +-MJPEG_LIBS = @MJPEG_LIBS@ + MKDIR_P = @MKDIR_P@ +-MODPLUG_CFLAGS = @MODPLUG_CFLAGS@ +-MODPLUG_LIBS = @MODPLUG_LIBS@ +-MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@ +-MPEG2ENC_LIBS = @MPEG2ENC_LIBS@ +-MPLEX_CFLAGS = @MPLEX_CFLAGS@ +-MPLEX_LIBS = @MPLEX_LIBS@ + MSGFMT = @MSGFMT@ + MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ +-MUSEPACK_LIBS = @MUSEPACK_LIBS@ +-MUSICBRAINZ_CFLAGS = @MUSICBRAINZ_CFLAGS@ +-MUSICBRAINZ_LIBS = @MUSICBRAINZ_LIBS@ +-NAS_CFLAGS = @NAS_CFLAGS@ +-NAS_LIBS = @NAS_LIBS@ +-NEON_CFLAGS = @NEON_CFLAGS@ +-NEON_LIBS = @NEON_LIBS@ + NM = @NM@ + NMEDIT = @NMEDIT@ + OBJC = @OBJC@ +@@ -353,9 +322,6 @@ + OBJC_LDFLAGS = @OBJC_LDFLAGS@ + OBJDUMP = @OBJDUMP@ + OBJEXT = @OBJEXT@ +-OFA_CFLAGS = @OFA_CFLAGS@ +-OFA_LIBS = @OFA_LIBS@ +-ORCC = @ORCC@ + OTOOL = @OTOOL@ + OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ +@@ -375,68 +341,64 @@ + PLUGINDIR = @PLUGINDIR@ + POSUB = @POSUB@ + PROFILE_CFLAGS = @PROFILE_CFLAGS@ ++PULSE_0_9_11_CFLAGS = @PULSE_0_9_11_CFLAGS@ ++PULSE_0_9_11_LIBS = @PULSE_0_9_11_LIBS@ ++PULSE_0_9_12_CFLAGS = @PULSE_0_9_12_CFLAGS@ ++PULSE_0_9_12_LIBS = @PULSE_0_9_12_LIBS@ ++PULSE_0_9_13_CFLAGS = @PULSE_0_9_13_CFLAGS@ ++PULSE_0_9_13_LIBS = @PULSE_0_9_13_LIBS@ ++PULSE_0_9_15_CFLAGS = @PULSE_0_9_15_CFLAGS@ ++PULSE_0_9_15_LIBS = @PULSE_0_9_15_LIBS@ ++PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@ ++PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@ ++PULSE_CFLAGS = @PULSE_CFLAGS@ ++PULSE_LIBS = @PULSE_LIBS@ + PYTHON = @PYTHON@ + PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ + PYTHON_PLATFORM = @PYTHON_PLATFORM@ + PYTHON_PREFIX = @PYTHON_PREFIX@ + PYTHON_VERSION = @PYTHON_VERSION@ +-Q = @Q@ + RANLIB = @RANLIB@ +-RSVG_CFLAGS = @RSVG_CFLAGS@ +-RSVG_LIBS = @RSVG_LIBS@ +-SCHRO_CFLAGS = @SCHRO_CFLAGS@ +-SCHRO_LIBS = @SCHRO_LIBS@ +-SDL_CFLAGS = @SDL_CFLAGS@ +-SDL_CONFIG = @SDL_CONFIG@ +-SDL_LIBS = @SDL_LIBS@ ++RAW1394_CFLAGS = @RAW1394_CFLAGS@ ++RAW1394_LIBS = @RAW1394_LIBS@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ +-SLV2_CFLAGS = @SLV2_CFLAGS@ +-SLV2_LIBS = @SLV2_LIBS@ +-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +-SNDFILE_LIBS = @SNDFILE_LIBS@ +-SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@ +-SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@ +-SPC_LIBS = @SPC_LIBS@ ++SHOUT2_CFLAGS = @SHOUT2_CFLAGS@ ++SHOUT2_LIBS = @SHOUT2_LIBS@ ++SOUP_CFLAGS = @SOUP_CFLAGS@ ++SOUP_LIBS = @SOUP_LIBS@ ++SPEEX_CFLAGS = @SPEEX_CFLAGS@ ++SPEEX_LIBS = @SPEEX_LIBS@ + STRIP = @STRIP@ +-SWFDEC_CFLAGS = @SWFDEC_CFLAGS@ +-SWFDEC_LIBS = @SWFDEC_LIBS@ +-THEORADEC_CFLAGS = @THEORADEC_CFLAGS@ +-THEORADEC_LIBS = @THEORADEC_LIBS@ +-TIGER_CFLAGS = @TIGER_CFLAGS@ +-TIGER_LIBS = @TIGER_LIBS@ +-TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@ +-TIMIDITY_LIBS = @TIMIDITY_LIBS@ ++TAGLIB_CFLAGS = @TAGLIB_CFLAGS@ ++TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@ ++TAGLIB_LIBS = @TAGLIB_LIBS@ + USE_NLS = @USE_NLS@ +-V = @V@ + VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ + VALGRIND_LIBS = @VALGRIND_LIBS@ + VALGRIND_PATH = @VALGRIND_PATH@ +-VDPAU_CFLAGS = @VDPAU_CFLAGS@ +-VDPAU_LIBS = @VDPAU_LIBS@ + VERSION = @VERSION@ +-WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@ +-WILDMIDI_LIBS = @WILDMIDI_LIBS@ ++WARNING_CFLAGS = @WARNING_CFLAGS@ ++WARNING_CXXFLAGS = @WARNING_CXXFLAGS@ ++WAVPACK_CFLAGS = @WAVPACK_CFLAGS@ ++WAVPACK_LIBS = @WAVPACK_LIBS@ + WIN32_LIBS = @WIN32_LIBS@ +-X11_CFLAGS = @X11_CFLAGS@ +-X11_LIBS = @X11_LIBS@ +-XDG_LIBS = @XDG_LIBS@ ++XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@ ++XDAMAGE_LIBS = @XDAMAGE_LIBS@ ++XFIXES_CFLAGS = @XFIXES_CFLAGS@ ++XFIXES_LIBS = @XFIXES_LIBS@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ + XMKMF = @XMKMF@ +-XMP_1_99_5_CFLAGS = @XMP_1_99_5_CFLAGS@ +-XMP_1_99_5_LIBS = @XMP_1_99_5_LIBS@ +-XMP_CFLAGS = @XMP_CFLAGS@ +-XMP_LIBS = @XMP_LIBS@ +-XVID_LIBS = @XVID_LIBS@ ++XSHM_LIBS = @XSHM_LIBS@ ++XVIDEO_LIBS = @XVIDEO_LIBS@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ZBAR_CFLAGS = @ZBAR_CFLAGS@ +-ZBAR_LIBS = @ZBAR_LIBS@ ++ZLIB_LIBS = @ZLIB_LIBS@ + abs_builddir = @abs_builddir@ + abs_srcdir = @abs_srcdir@ + abs_top_builddir = @abs_top_builddir@ +@@ -490,7 +452,6 @@ + pythondir = @pythondir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ +-shavedir = @shavedir@ + srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +@@ -520,9 +481,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/liveadder/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu farsight/liveadder/Makefile'; \ + $(am__cd) $(top_srcdir) && \ +- $(AUTOMAKE) --gnu gst/liveadder/Makefile ++ $(AUTOMAKE) --gnu farsight/liveadder/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -573,7 +534,7 @@ + rm -f "$${dir}/so_locations"; \ + done + libgstliveadder.la: $(libgstliveadder_la_OBJECTS) $(libgstliveadder_la_DEPENDENCIES) +- $(libgstliveadder_la_LINK) -rpath $(plugindir) $(libgstliveadder_la_OBJECTS) $(libgstliveadder_la_LIBADD) $(LIBS) ++ $(AM_V_CCLD)$(libgstliveadder_la_LINK) -rpath $(plugindir) $(libgstliveadder_la_OBJECTS) $(libgstliveadder_la_LIBADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -584,32 +545,36 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstliveadder_la-liveadder.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + libgstliveadder_la-liveadder.lo: liveadder.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstliveadder_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstliveadder_la_CFLAGS) $(CFLAGS) -MT libgstliveadder_la-liveadder.lo -MD -MP -MF $(DEPDIR)/libgstliveadder_la-liveadder.Tpo -c -o libgstliveadder_la-liveadder.lo `test -f 'liveadder.c' || echo '$(srcdir)/'`liveadder.c +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstliveadder_la-liveadder.Tpo $(DEPDIR)/libgstliveadder_la-liveadder.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstliveadder_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstliveadder_la_CFLAGS) $(CFLAGS) -MT libgstliveadder_la-liveadder.lo -MD -MP -MF $(DEPDIR)/libgstliveadder_la-liveadder.Tpo -c -o libgstliveadder_la-liveadder.lo `test -f 'liveadder.c' || echo '$(srcdir)/'`liveadder.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstliveadder_la-liveadder.Tpo $(DEPDIR)/libgstliveadder_la-liveadder.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='liveadder.c' object='libgstliveadder_la-liveadder.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstliveadder_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstliveadder_la_CFLAGS) $(CFLAGS) -c -o libgstliveadder_la-liveadder.lo `test -f 'liveadder.c' || echo '$(srcdir)/'`liveadder.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstliveadder_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstliveadder_la_CFLAGS) $(CFLAGS) -c -o libgstliveadder_la-liveadder.lo `test -f 'liveadder.c' || echo '$(srcdir)/'`liveadder.c + + mostlyclean-libtool: + -rm -f *.lo +diff -Nur gst-plugins-good0.10-0.10.23.deb/farsight/Makefile.in gst-plugins-good0.10-0.10.23/farsight/Makefile.in +--- gst-plugins-good0.10-0.10.23.deb/farsight/Makefile.in 1970-01-01 01:00:00.000000000 +0100 ++++ gst-plugins-good0.10-0.10.23/farsight/Makefile.in 2010-05-31 17:30:15.000000000 +0200 +@@ -0,0 +1,790 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# @configure_input@ ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++@SET_MAKE@ ++VPATH = @srcdir@ ++pkgdatadir = $(datadir)/@PACKAGE@ ++pkgincludedir = $(includedir)/@PACKAGE@ ++pkglibdir = $(libdir)/@PACKAGE@ ++pkglibexecdir = $(libexecdir)/@PACKAGE@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = @build@ ++host_triplet = @host@ ++subdir = farsight ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ ++ $(top_srcdir)/common/m4/as-auto-alt.m4 \ ++ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ ++ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ ++ $(top_srcdir)/common/m4/as-objc.m4 \ ++ $(top_srcdir)/common/m4/as-python.m4 \ ++ $(top_srcdir)/common/m4/as-scrub-include.m4 \ ++ $(top_srcdir)/common/m4/as-version.m4 \ ++ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ ++ $(top_srcdir)/common/m4/gst-arch.m4 \ ++ $(top_srcdir)/common/m4/gst-args.m4 \ ++ $(top_srcdir)/common/m4/gst-check.m4 \ ++ $(top_srcdir)/common/m4/gst-default.m4 \ ++ $(top_srcdir)/common/m4/gst-dowhile.m4 \ ++ $(top_srcdir)/common/m4/gst-error.m4 \ ++ $(top_srcdir)/common/m4/gst-feature.m4 \ ++ $(top_srcdir)/common/m4/gst-gettext.m4 \ ++ $(top_srcdir)/common/m4/gst-glib2.m4 \ ++ $(top_srcdir)/common/m4/gst-plugin-docs.m4 \ ++ $(top_srcdir)/common/m4/gst-plugindir.m4 \ ++ $(top_srcdir)/common/m4/gst-x11.m4 \ ++ $(top_srcdir)/common/m4/gst.m4 \ ++ $(top_srcdir)/common/m4/gtk-doc.m4 \ ++ $(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/aalib.m4 \ ++ $(top_srcdir)/m4/esd.m4 $(top_srcdir)/m4/gconf-2.m4 \ ++ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \ ++ $(top_srcdir)/m4/gst-shout2.m4 $(top_srcdir)/m4/iconv.m4 \ ++ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ ++ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ ++ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ ++ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ ++ $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(install_sh) -d ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++AM_V_GEN = $(am__v_GEN_$(V)) ++am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) ++am__v_GEN_0 = @echo " GEN " $@; ++AM_V_at = $(am__v_at_$(V)) ++am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) ++am__v_at_0 = @ ++SOURCES = ++DIST_SOURCES = ++RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ ++ html-recursive info-recursive install-data-recursive \ ++ install-dvi-recursive install-exec-recursive \ ++ install-html-recursive install-info-recursive \ ++ install-pdf-recursive install-ps-recursive install-recursive \ ++ installcheck-recursive installdirs-recursive pdf-recursive \ ++ ps-recursive uninstall-recursive ++RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ ++ distclean-recursive maintainer-clean-recursive ++AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ ++ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ ++ distdir ++ETAGS = etags ++CTAGS = ctags ++DIST_SUBDIRS = $(SUBDIRS) ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++am__relativize = \ ++ dir0=`pwd`; \ ++ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ ++ sed_rest='s,^[^/]*/*,,'; \ ++ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ ++ sed_butlast='s,/*[^/]*$$,,'; \ ++ while test -n "$$dir1"; do \ ++ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ ++ if test "$$first" != "."; then \ ++ if test "$$first" = ".."; then \ ++ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ ++ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ ++ else \ ++ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ ++ if test "$$first2" = "$$first"; then \ ++ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ ++ else \ ++ dir2="../$$dir2"; \ ++ fi; \ ++ dir0="$$dir0"/"$$first"; \ ++ fi; \ ++ fi; \ ++ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ ++ done; \ ++ reldir="$$dir2" ++AALIB_CFLAGS = @AALIB_CFLAGS@ ++AALIB_CONFIG = @AALIB_CONFIG@ ++AALIB_LIBS = @AALIB_LIBS@ ++ACLOCAL = @ACLOCAL@ ++ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ++AMTAR = @AMTAR@ ++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ++ANNODEX_CFLAGS = @ANNODEX_CFLAGS@ ++ANNODEX_LIBS = @ANNODEX_LIBS@ ++AR = @AR@ ++AS = @AS@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ ++AWK = @AWK@ ++BZ2_LIBS = @BZ2_LIBS@ ++CAIRO_CFLAGS = @CAIRO_CFLAGS@ ++CAIRO_LIBS = @CAIRO_LIBS@ ++CC = @CC@ ++CCAS = @CCAS@ ++CCASDEPMODE = @CCASDEPMODE@ ++CCASFLAGS = @CCASFLAGS@ ++CCDEPMODE = @CCDEPMODE@ ++CFLAGS = @CFLAGS@ ++CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ ++CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@ ++DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@ ++DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@ ++DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@ ++DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@ ++DEFS = @DEFS@ ++DEPDIR = @DEPDIR@ ++DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@ ++DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@ ++DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@ ++DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@ ++DLLTOOL = @DLLTOOL@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ ++DV1394_CFLAGS = @DV1394_CFLAGS@ ++DV1394_LIBS = @DV1394_LIBS@ ++ECHO_C = @ECHO_C@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ ++ERROR_CFLAGS = @ERROR_CFLAGS@ ++ERROR_CXXFLAGS = @ERROR_CXXFLAGS@ ++ESD_CFLAGS = @ESD_CFLAGS@ ++ESD_CONFIG = @ESD_CONFIG@ ++ESD_LIBS = @ESD_LIBS@ ++EXEEXT = @EXEEXT@ ++FFLAGS = @FFLAGS@ ++FGREP = @FGREP@ ++FLAC_CFLAGS = @FLAC_CFLAGS@ ++FLAC_LIBS = @FLAC_LIBS@ ++GCONFTOOL = @GCONFTOOL@ ++GCONF_CFLAGS = @GCONF_CFLAGS@ ++GCONF_LIBS = @GCONF_LIBS@ ++GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ ++GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ ++GCOV = @GCOV@ ++GCOV_CFLAGS = @GCOV_CFLAGS@ ++GCOV_LIBS = @GCOV_LIBS@ ++GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ ++GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ ++GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ ++GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ ++GLIB_CFLAGS = @GLIB_CFLAGS@ ++GLIB_LIBS = @GLIB_LIBS@ ++GLIB_PREFIX = @GLIB_PREFIX@ ++GLIB_REQ = @GLIB_REQ@ ++GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ ++GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@ ++GSTPB_PREFIX = @GSTPB_PREFIX@ ++GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@ ++GST_BASE_CFLAGS = @GST_BASE_CFLAGS@ ++GST_BASE_LIBS = @GST_BASE_LIBS@ ++GST_CFLAGS = @GST_CFLAGS@ ++GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@ ++GST_CHECK_LIBS = @GST_CHECK_LIBS@ ++GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@ ++GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@ ++GST_CXXFLAGS = @GST_CXXFLAGS@ ++GST_GDP_CFLAGS = @GST_GDP_CFLAGS@ ++GST_GDP_LIBS = @GST_GDP_LIBS@ ++GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@ ++GST_LIBS = @GST_LIBS@ ++GST_LICENSE = @GST_LICENSE@ ++GST_LT_LDFLAGS = @GST_LT_LDFLAGS@ ++GST_MAJORMINOR = @GST_MAJORMINOR@ ++GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@ ++GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@ ++GST_PACKAGE_NAME = @GST_PACKAGE_NAME@ ++GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@ ++GST_PLUGINS_ALL = @GST_PLUGINS_ALL@ ++GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@ ++GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@ ++GST_PLUGINS_DIR = @GST_PLUGINS_DIR@ ++GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@ ++GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@ ++GST_PREFIX = @GST_PREFIX@ ++GST_TOOLS_DIR = @GST_TOOLS_DIR@ ++GTKDOC_CHECK = @GTKDOC_CHECK@ ++GTK_CFLAGS = @GTK_CFLAGS@ ++GTK_LIBS = @GTK_LIBS@ ++GUDEV_CFLAGS = @GUDEV_CFLAGS@ ++GUDEV_LIBS = @GUDEV_LIBS@ ++HAL_CFLAGS = @HAL_CFLAGS@ ++HAL_LIBS = @HAL_LIBS@ ++HAVE_AVC1394 = @HAVE_AVC1394@ ++HAVE_BZ2 = @HAVE_BZ2@ ++HAVE_CXX = @HAVE_CXX@ ++HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@ ++HAVE_GCONFTOOL = @HAVE_GCONFTOOL@ ++HAVE_ROM1394 = @HAVE_ROM1394@ ++HAVE_SPEEX = @HAVE_SPEEX@ ++HAVE_X = @HAVE_X@ ++HAVE_XSHM = @HAVE_XSHM@ ++HAVE_ZLIB = @HAVE_ZLIB@ ++HTML_DIR = @HTML_DIR@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++INTLLIBS = @INTLLIBS@ ++INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ ++JPEG_LIBS = @JPEG_LIBS@ ++LD = @LD@ ++LDFLAGS = @LDFLAGS@ ++LIBCACA_CFLAGS = @LIBCACA_CFLAGS@ ++LIBCACA_CONFIG = @LIBCACA_CONFIG@ ++LIBCACA_LIBS = @LIBCACA_LIBS@ ++LIBDV_CFLAGS = @LIBDV_CFLAGS@ ++LIBDV_LIBS = @LIBDV_LIBS@ ++LIBICONV = @LIBICONV@ ++LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@ ++LIBIEC61883_LIBS = @LIBIEC61883_LIBS@ ++LIBINTL = @LIBINTL@ ++LIBM = @LIBM@ ++LIBOBJS = @LIBOBJS@ ++LIBOIL_CFLAGS = @LIBOIL_CFLAGS@ ++LIBOIL_LIBS = @LIBOIL_LIBS@ ++LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ ++LIBPNG_LIBS = @LIBPNG_LIBS@ ++LIBS = @LIBS@ ++LIBTOOL = @LIBTOOL@ ++LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ ++LIBV4L2_LIBS = @LIBV4L2_LIBS@ ++LIPO = @LIPO@ ++LN_S = @LN_S@ ++LOCALEDIR = @LOCALEDIR@ ++LTLIBICONV = @LTLIBICONV@ ++LTLIBINTL = @LTLIBINTL@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAINT = @MAINT@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ ++MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ ++MSGMERGE = @MSGMERGE@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ ++OBJC = @OBJC@ ++OBJCDEPMODE = @OBJCDEPMODE@ ++OBJC_LDFLAGS = @OBJC_LDFLAGS@ ++OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ ++PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ ++PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ ++PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ ++PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@ ++PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ ++PKG_CONFIG = @PKG_CONFIG@ ++PLUGINDIR = @PLUGINDIR@ ++POSUB = @POSUB@ ++PROFILE_CFLAGS = @PROFILE_CFLAGS@ ++PULSE_0_9_11_CFLAGS = @PULSE_0_9_11_CFLAGS@ ++PULSE_0_9_11_LIBS = @PULSE_0_9_11_LIBS@ ++PULSE_0_9_12_CFLAGS = @PULSE_0_9_12_CFLAGS@ ++PULSE_0_9_12_LIBS = @PULSE_0_9_12_LIBS@ ++PULSE_0_9_13_CFLAGS = @PULSE_0_9_13_CFLAGS@ ++PULSE_0_9_13_LIBS = @PULSE_0_9_13_LIBS@ ++PULSE_0_9_15_CFLAGS = @PULSE_0_9_15_CFLAGS@ ++PULSE_0_9_15_LIBS = @PULSE_0_9_15_LIBS@ ++PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@ ++PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@ ++PULSE_CFLAGS = @PULSE_CFLAGS@ ++PULSE_LIBS = @PULSE_LIBS@ ++PYTHON = @PYTHON@ ++PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ ++PYTHON_PLATFORM = @PYTHON_PLATFORM@ ++PYTHON_PREFIX = @PYTHON_PREFIX@ ++PYTHON_VERSION = @PYTHON_VERSION@ ++RANLIB = @RANLIB@ ++RAW1394_CFLAGS = @RAW1394_CFLAGS@ ++RAW1394_LIBS = @RAW1394_LIBS@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ ++SHOUT2_CFLAGS = @SHOUT2_CFLAGS@ ++SHOUT2_LIBS = @SHOUT2_LIBS@ ++SOUP_CFLAGS = @SOUP_CFLAGS@ ++SOUP_LIBS = @SOUP_LIBS@ ++SPEEX_CFLAGS = @SPEEX_CFLAGS@ ++SPEEX_LIBS = @SPEEX_LIBS@ ++STRIP = @STRIP@ ++TAGLIB_CFLAGS = @TAGLIB_CFLAGS@ ++TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@ ++TAGLIB_LIBS = @TAGLIB_LIBS@ ++USE_NLS = @USE_NLS@ ++VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ ++VALGRIND_LIBS = @VALGRIND_LIBS@ ++VALGRIND_PATH = @VALGRIND_PATH@ ++VERSION = @VERSION@ ++WARNING_CFLAGS = @WARNING_CFLAGS@ ++WARNING_CXXFLAGS = @WARNING_CXXFLAGS@ ++WAVPACK_CFLAGS = @WAVPACK_CFLAGS@ ++WAVPACK_LIBS = @WAVPACK_LIBS@ ++WIN32_LIBS = @WIN32_LIBS@ ++XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@ ++XDAMAGE_LIBS = @XDAMAGE_LIBS@ ++XFIXES_CFLAGS = @XFIXES_CFLAGS@ ++XFIXES_LIBS = @XFIXES_LIBS@ ++XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ++XMKMF = @XMKMF@ ++XSHM_LIBS = @XSHM_LIBS@ ++XVIDEO_LIBS = @XVIDEO_LIBS@ ++X_CFLAGS = @X_CFLAGS@ ++X_EXTRA_LIBS = @X_EXTRA_LIBS@ ++X_LIBS = @X_LIBS@ ++X_PRE_LIBS = @X_PRE_LIBS@ ++ZLIB_LIBS = @ZLIB_LIBS@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ++ac_ct_OBJC = @ac_ct_OBJC@ ++am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ ++am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ ++install_sh = @install_sh@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++pkgpyexecdir = @pkgpyexecdir@ ++pkgpythondir = @pkgpythondir@ ++plugindir = @plugindir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++pyexecdir = @pyexecdir@ ++pythondir = @pythondir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_build_prefix = @top_build_prefix@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ ++SUBDIRS = autoconvert dtmf liveadder rtpmux valve ++all: all-recursive ++ ++.SUFFIXES: ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu farsight/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnu farsight/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++# This directory's subdirectories are mostly independent; you can cd ++# into them and run `make' without going through this Makefile. ++# To change the values of `make' variables: instead of editing Makefiles, ++# (1) if the variable is set in `config.status', edit `config.status' ++# (which will cause the Makefiles to be regenerated when you run `make'); ++# (2) otherwise, pass the desired values on the `make' command line. ++$(RECURSIVE_TARGETS): ++ @fail= failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ ++ dot_seen=no; \ ++ target=`echo $@ | sed s/-recursive//`; \ ++ list='$(SUBDIRS)'; for subdir in $$list; do \ ++ echo "Making $$target in $$subdir"; \ ++ if test "$$subdir" = "."; then \ ++ dot_seen=yes; \ ++ local_target="$$target-am"; \ ++ else \ ++ local_target="$$target"; \ ++ fi; \ ++ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ ++ || eval $$failcom; \ ++ done; \ ++ if test "$$dot_seen" = "no"; then \ ++ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ ++ fi; test -z "$$fail" ++ ++$(RECURSIVE_CLEAN_TARGETS): ++ @fail= failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ ++ dot_seen=no; \ ++ case "$@" in \ ++ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ ++ *) list='$(SUBDIRS)' ;; \ ++ esac; \ ++ rev=''; for subdir in $$list; do \ ++ if test "$$subdir" = "."; then :; else \ ++ rev="$$subdir $$rev"; \ ++ fi; \ ++ done; \ ++ rev="$$rev ."; \ ++ target=`echo $@ | sed s/-recursive//`; \ ++ for subdir in $$rev; do \ ++ echo "Making $$target in $$subdir"; \ ++ if test "$$subdir" = "."; then \ ++ local_target="$$target-am"; \ ++ else \ ++ local_target="$$target"; \ ++ fi; \ ++ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ ++ || eval $$failcom; \ ++ done && test -z "$$fail" ++tags-recursive: ++ list='$(SUBDIRS)'; for subdir in $$list; do \ ++ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ ++ done ++ctags-recursive: ++ list='$(SUBDIRS)'; for subdir in $$list; do \ ++ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ ++ done ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ mkid -fID $$unique ++tags: TAGS ++ ++TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ set x; \ ++ here=`pwd`; \ ++ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ ++ include_option=--etags-include; \ ++ empty_fix=.; \ ++ else \ ++ include_option=--include; \ ++ empty_fix=; \ ++ fi; \ ++ list='$(SUBDIRS)'; for subdir in $$list; do \ ++ if test "$$subdir" = .; then :; else \ ++ test ! -f $$subdir/TAGS || \ ++ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ ++ fi; \ ++ done; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: CTAGS ++CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ ++ if test "$$subdir" = .; then :; else \ ++ test -d "$(distdir)/$$subdir" \ ++ || $(MKDIR_P) "$(distdir)/$$subdir" \ ++ || exit 1; \ ++ fi; \ ++ done ++ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ ++ if test "$$subdir" = .; then :; else \ ++ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ ++ $(am__relativize); \ ++ new_distdir=$$reldir; \ ++ dir1=$$subdir; dir2="$(top_distdir)"; \ ++ $(am__relativize); \ ++ new_top_distdir=$$reldir; \ ++ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ ++ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ++ ($(am__cd) $$subdir && \ ++ $(MAKE) $(AM_MAKEFLAGS) \ ++ top_distdir="$$new_top_distdir" \ ++ distdir="$$new_distdir" \ ++ am__remove_distdir=: \ ++ am__skip_length_check=: \ ++ am__skip_mode_fix=: \ ++ distdir) \ ++ || exit 1; \ ++ fi; \ ++ done ++check-am: all-am ++check: check-recursive ++all-am: Makefile ++installdirs: installdirs-recursive ++installdirs-am: ++install: install-recursive ++install-exec: install-exec-recursive ++install-data: install-data-recursive ++uninstall: uninstall-recursive ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-recursive ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-recursive ++ ++clean-am: clean-generic clean-libtool mostlyclean-am ++ ++distclean: distclean-recursive ++ -rm -f Makefile ++distclean-am: clean-am distclean-generic distclean-tags ++ ++dvi: dvi-recursive ++ ++dvi-am: ++ ++html: html-recursive ++ ++html-am: ++ ++info: info-recursive ++ ++info-am: ++ ++install-data-am: ++ ++install-dvi: install-dvi-recursive ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++install-html: install-html-recursive ++ ++install-html-am: ++ ++install-info: install-info-recursive ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-recursive ++ ++install-pdf-am: ++ ++install-ps: install-ps-recursive ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-recursive ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-recursive ++ ++mostlyclean-am: mostlyclean-generic mostlyclean-libtool ++ ++pdf: pdf-recursive ++ ++pdf-am: ++ ++ps: ps-recursive ++ ++ps-am: ++ ++uninstall-am: ++ ++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ ++ install-am install-strip tags-recursive ++ ++.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ ++ all all-am check check-am clean clean-generic clean-libtool \ ++ ctags ctags-recursive distclean distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-am install-data \ ++ install-data-am install-dvi install-dvi-am install-exec \ ++ install-exec-am install-html install-html-am install-info \ ++ install-info-am install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs installdirs-am maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-generic \ ++ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ ++ uninstall uninstall-am ++ ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Nur gst-plugins-good0.10-0.10.23.deb/farsight/rtpmux/Makefile.in gst-plugins-good0.10-0.10.23/farsight/rtpmux/Makefile.in +--- gst-plugins-good0.10-0.10.23.deb/farsight/rtpmux/Makefile.in 2010-05-31 17:29:53.000000000 +0200 ++++ gst-plugins-good0.10-0.10.23/farsight/rtpmux/Makefile.in 2010-05-31 17:30:16.000000000 +0200 +@@ -35,13 +35,14 @@ + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ +-subdir = gst/rtpmux ++subdir = farsight/rtpmux + DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ + $(top_srcdir)/common/m4/as-auto-alt.m4 \ + $(top_srcdir)/common/m4/as-compiler-flag.m4 \ ++ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ + $(top_srcdir)/common/m4/as-objc.m4 \ + $(top_srcdir)/common/m4/as-python.m4 \ + $(top_srcdir)/common/m4/as-scrub-include.m4 \ +@@ -56,16 +57,15 @@ + $(top_srcdir)/common/m4/gst-feature.m4 \ + $(top_srcdir)/common/m4/gst-gettext.m4 \ + $(top_srcdir)/common/m4/gst-glib2.m4 \ +- $(top_srcdir)/common/m4/gst-platform.m4 \ + $(top_srcdir)/common/m4/gst-plugin-docs.m4 \ + $(top_srcdir)/common/m4/gst-plugindir.m4 \ + $(top_srcdir)/common/m4/gst-x11.m4 \ + $(top_srcdir)/common/m4/gst.m4 \ + $(top_srcdir)/common/m4/gtk-doc.m4 \ +- $(top_srcdir)/common/m4/pkg.m4 \ +- $(top_srcdir)/common/m4/shave.m4 $(top_srcdir)/m4/gettext.m4 \ +- $(top_srcdir)/m4/gst-alsa.m4 $(top_srcdir)/m4/gst-fionread.m4 \ +- $(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \ ++ $(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/aalib.m4 \ ++ $(top_srcdir)/m4/esd.m4 $(top_srcdir)/m4/gconf-2.m4 \ ++ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \ ++ $(top_srcdir)/m4/gst-shout2.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ +@@ -108,7 +108,10 @@ + am_libgstrtpmux_la_OBJECTS = libgstrtpmux_la-gstrtpmuxer.lo \ + libgstrtpmux_la-gstrtpmux.lo libgstrtpmux_la-gstrtpdtmfmux.lo + libgstrtpmux_la_OBJECTS = $(am_libgstrtpmux_la_OBJECTS) +-libgstrtpmux_la_LINK = $(LIBTOOL) --tag=CC \ ++AM_V_lt = $(am__v_lt_$(V)) ++am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) ++am__v_lt_0 = --silent ++libgstrtpmux_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) \ + $(libgstrtpmux_la_LDFLAGS) $(LDFLAGS) -o $@ +@@ -118,54 +121,56 @@ + am__mv = mv -f + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ ++ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ ++ $(AM_CFLAGS) $(CFLAGS) ++AM_V_CC = $(am__v_CC_$(V)) ++am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) ++am__v_CC_0 = @echo " CC " $@; ++AM_V_at = $(am__v_at_$(V)) ++am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) ++am__v_at_0 = @ + CCLD = $(CC) +-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ +- $(LDFLAGS) -o $@ ++LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++AM_V_CCLD = $(am__v_CCLD_$(V)) ++am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) ++am__v_CCLD_0 = @echo " CCLD " $@; ++AM_V_GEN = $(am__v_GEN_$(V)) ++am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) ++am__v_GEN_0 = @echo " GEN " $@; + SOURCES = $(libgstrtpmux_la_SOURCES) + DIST_SOURCES = $(libgstrtpmux_la_SOURCES) + HEADERS = $(noinst_HEADERS) + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++AALIB_CFLAGS = @AALIB_CFLAGS@ ++AALIB_CONFIG = @AALIB_CONFIG@ ++AALIB_LIBS = @AALIB_LIBS@ + ACLOCAL = @ACLOCAL@ + ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +-ACMENC_CFLAGS = @ACMENC_CFLAGS@ +-ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@ +-ALSA_CFLAGS = @ALSA_CFLAGS@ +-ALSA_LIBS = @ALSA_LIBS@ +-AMRWB_LIBS = @AMRWB_LIBS@ + AMTAR = @AMTAR@ +-AM_MAKEFLAGS = @AM_MAKEFLAGS@ +-APEXSINK_CFLAGS = @APEXSINK_CFLAGS@ +-APEXSINK_LIBS = @APEXSINK_LIBS@ ++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ++ANNODEX_CFLAGS = @ANNODEX_CFLAGS@ ++ANNODEX_LIBS = @ANNODEX_LIBS@ + AR = @AR@ + AS = @AS@ +-ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@ +-ASSRENDER_LIBS = @ASSRENDER_LIBS@ + AUTOCONF = @AUTOCONF@ + AUTOHEADER = @AUTOHEADER@ + AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + BZ2_LIBS = @BZ2_LIBS@ ++CAIRO_CFLAGS = @CAIRO_CFLAGS@ ++CAIRO_LIBS = @CAIRO_LIBS@ + CC = @CC@ ++CCAS = @CCAS@ ++CCASDEPMODE = @CCASDEPMODE@ + CCASFLAGS = @CCASFLAGS@ + CCDEPMODE = @CCDEPMODE@ +-CDAUDIO_CFLAGS = @CDAUDIO_CFLAGS@ +-CDAUDIO_CONFIG = @CDAUDIO_CONFIG@ +-CDAUDIO_LIBS = @CDAUDIO_LIBS@ +-CELT_0_5_CFLAGS = @CELT_0_5_CFLAGS@ +-CELT_0_5_LIBS = @CELT_0_5_LIBS@ +-CELT_0_7_CFLAGS = @CELT_0_7_CFLAGS@ +-CELT_0_7_LIBS = @CELT_0_7_LIBS@ +-CELT_CFLAGS = @CELT_CFLAGS@ +-CELT_LIBS = @CELT_LIBS@ + CFLAGS = @CFLAGS@ +-COG_CFLAGS = @COG_CFLAGS@ +-COG_LIBS = @COG_LIBS@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CXX = @CXX@ +@@ -173,7 +178,6 @@ + CXXDEPMODE = @CXXDEPMODE@ + CXXFLAGS = @CXXFLAGS@ + CYGPATH_W = @CYGPATH_W@ +-DCCP_LIBS = @DCCP_LIBS@ + DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@ + DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@ + DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@ +@@ -182,61 +186,47 @@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ + DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@ +-DIRAC_CFLAGS = @DIRAC_CFLAGS@ +-DIRAC_LIBS = @DIRAC_LIBS@ +-DIRECTDRAW_LIBS = @DIRECTDRAW_LIBS@ +-DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ +-DIRECTFB_LIBS = @DIRECTFB_LIBS@ ++DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@ ++DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@ + DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@ +-DIRECTX_CFLAGS = @DIRECTX_CFLAGS@ +-DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@ +-DIVXDEC_LIBS = @DIVXDEC_LIBS@ +-DIVXENC_LIBS = @DIVXENC_LIBS@ + DLLTOOL = @DLLTOOL@ + DSYMUTIL = @DSYMUTIL@ +-DTS_LIBS = @DTS_LIBS@ + DUMPBIN = @DUMPBIN@ +-DVDNAV_CFLAGS = @DVDNAV_CFLAGS@ +-DVDNAV_CONFIG = @DVDNAV_CONFIG@ +-DVDNAV_LIBS = @DVDNAV_LIBS@ ++DV1394_CFLAGS = @DV1394_CFLAGS@ ++DV1394_LIBS = @DV1394_LIBS@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + ERROR_CFLAGS = @ERROR_CFLAGS@ + ERROR_CXXFLAGS = @ERROR_CXXFLAGS@ ++ESD_CFLAGS = @ESD_CFLAGS@ ++ESD_CONFIG = @ESD_CONFIG@ ++ESD_LIBS = @ESD_LIBS@ + EXEEXT = @EXEEXT@ +-EXIF_CFLAGS = @EXIF_CFLAGS@ +-EXIF_LIBS = @EXIF_LIBS@ +-F77 = @F77@ +-FAAC_LIBS = @FAAC_LIBS@ +-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@ +-FAAD_LIBS = @FAAD_LIBS@ +-FC = @FC@ + FFLAGS = @FFLAGS@ + FGREP = @FGREP@ +-FLITE_CFLAGS = @FLITE_CFLAGS@ +-FLITE_LIBS = @FLITE_LIBS@ ++FLAC_CFLAGS = @FLAC_CFLAGS@ ++FLAC_LIBS = @FLAC_LIBS@ ++GCONFTOOL = @GCONFTOOL@ ++GCONF_CFLAGS = @GCONF_CFLAGS@ ++GCONF_LIBS = @GCONF_LIBS@ ++GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ ++GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ + GCOV = @GCOV@ + GCOV_CFLAGS = @GCOV_CFLAGS@ + GCOV_LIBS = @GCOV_LIBS@ ++GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ ++GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ + GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +-GIO_CFLAGS = @GIO_CFLAGS@ +-GIO_LIBS = @GIO_LIBS@ + GLIB_CFLAGS = @GLIB_CFLAGS@ + GLIB_LIBS = @GLIB_LIBS@ + GLIB_PREFIX = @GLIB_PREFIX@ + GLIB_REQ = @GLIB_REQ@ +-GME_LIBS = @GME_LIBS@ +-GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@ +-GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@ + GMSGFMT = @GMSGFMT@ + GMSGFMT_015 = @GMSGFMT_015@ +-GMYTH_CFLAGS = @GMYTH_CFLAGS@ +-GMYTH_LIBS = @GMYTH_LIBS@ + GREP = @GREP@ +-GSM_LIBS = @GSM_LIBS@ + GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@ + GSTPB_PREFIX = @GSTPB_PREFIX@ + GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@ +@@ -253,6 +243,7 @@ + GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@ + GST_LIBS = @GST_LIBS@ + GST_LICENSE = @GST_LICENSE@ ++GST_LT_LDFLAGS = @GST_LT_LDFLAGS@ + GST_MAJORMINOR = @GST_MAJORMINOR@ + GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@ + GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@ +@@ -269,20 +260,20 @@ + GTKDOC_CHECK = @GTKDOC_CHECK@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_AMRWB = @HAVE_AMRWB@ ++GUDEV_CFLAGS = @GUDEV_CFLAGS@ ++GUDEV_LIBS = @GUDEV_LIBS@ ++HAL_CFLAGS = @HAL_CFLAGS@ ++HAL_LIBS = @HAL_LIBS@ ++HAVE_AVC1394 = @HAVE_AVC1394@ + HAVE_BZ2 = @HAVE_BZ2@ + HAVE_CXX = @HAVE_CXX@ +-HAVE_DIRECTDRAW = @HAVE_DIRECTDRAW@ + HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@ +-HAVE_DTS = @HAVE_DTS@ +-HAVE_FAAC = @HAVE_FAAC@ +-HAVE_FAAD = @HAVE_FAAD@ +-HAVE_FLITE = @HAVE_FLITE@ +-HAVE_GSM = @HAVE_GSM@ +-HAVE_JP2K = @HAVE_JP2K@ +-HAVE_NAS = @HAVE_NAS@ ++HAVE_GCONFTOOL = @HAVE_GCONFTOOL@ ++HAVE_ROM1394 = @HAVE_ROM1394@ ++HAVE_SPEEX = @HAVE_SPEEX@ + HAVE_X = @HAVE_X@ +-HAVE_X11 = @HAVE_X11@ ++HAVE_XSHM = @HAVE_XSHM@ ++HAVE_ZLIB = @HAVE_ZLIB@ + HTML_DIR = @HTML_DIR@ + INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ +@@ -291,62 +282,40 @@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + INTLLIBS = @INTLLIBS@ + INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +-IPTC_CFLAGS = @IPTC_CFLAGS@ +-IPTC_LIBS = @IPTC_LIBS@ +-JACK_CFLAGS = @JACK_CFLAGS@ +-JACK_LIBS = @JACK_LIBS@ +-JP2K_LIBS = @JP2K_LIBS@ +-KATE_CFLAGS = @KATE_CFLAGS@ +-KATE_LIBS = @KATE_LIBS@ ++JPEG_LIBS = @JPEG_LIBS@ + LD = @LD@ + LDFLAGS = @LDFLAGS@ +-LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@ +-LIBDC1394_LIBS = @LIBDC1394_LIBS@ +-LIBDIR = @LIBDIR@ ++LIBCACA_CFLAGS = @LIBCACA_CFLAGS@ ++LIBCACA_CONFIG = @LIBCACA_CONFIG@ ++LIBCACA_LIBS = @LIBCACA_LIBS@ ++LIBDV_CFLAGS = @LIBDV_CFLAGS@ ++LIBDV_LIBS = @LIBDV_LIBS@ + LIBICONV = @LIBICONV@ ++LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@ ++LIBIEC61883_LIBS = @LIBIEC61883_LIBS@ + LIBINTL = @LIBINTL@ + LIBM = @LIBM@ +-LIBMMS_CFLAGS = @LIBMMS_CFLAGS@ +-LIBMMS_LIBS = @LIBMMS_LIBS@ + LIBOBJS = @LIBOBJS@ + LIBOIL_CFLAGS = @LIBOIL_CFLAGS@ + LIBOIL_LIBS = @LIBOIL_LIBS@ ++LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ ++LIBPNG_LIBS = @LIBPNG_LIBS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ ++LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ ++LIBV4L2_LIBS = @LIBV4L2_LIBS@ + LIPO = @LIPO@ + LN_S = @LN_S@ + LOCALEDIR = @LOCALEDIR@ +-LRDF_CFLAGS = @LRDF_CFLAGS@ +-LRDF_LIBS = @LRDF_LIBS@ + LTLIBICONV = @LTLIBICONV@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ +-MAKEFLAGS = @MAKEFLAGS@ + MAKEINFO = @MAKEINFO@ +-METADATA_CFLAGS = @METADATA_CFLAGS@ +-METADATA_LIBS = @METADATA_LIBS@ +-MIMIC_CFLAGS = @MIMIC_CFLAGS@ +-MIMIC_LIBS = @MIMIC_LIBS@ +-MJPEG_CFLAGS = @MJPEG_CFLAGS@ +-MJPEG_LIBS = @MJPEG_LIBS@ + MKDIR_P = @MKDIR_P@ +-MODPLUG_CFLAGS = @MODPLUG_CFLAGS@ +-MODPLUG_LIBS = @MODPLUG_LIBS@ +-MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@ +-MPEG2ENC_LIBS = @MPEG2ENC_LIBS@ +-MPLEX_CFLAGS = @MPLEX_CFLAGS@ +-MPLEX_LIBS = @MPLEX_LIBS@ + MSGFMT = @MSGFMT@ + MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ +-MUSEPACK_LIBS = @MUSEPACK_LIBS@ +-MUSICBRAINZ_CFLAGS = @MUSICBRAINZ_CFLAGS@ +-MUSICBRAINZ_LIBS = @MUSICBRAINZ_LIBS@ +-NAS_CFLAGS = @NAS_CFLAGS@ +-NAS_LIBS = @NAS_LIBS@ +-NEON_CFLAGS = @NEON_CFLAGS@ +-NEON_LIBS = @NEON_LIBS@ + NM = @NM@ + NMEDIT = @NMEDIT@ + OBJC = @OBJC@ +@@ -354,9 +323,6 @@ + OBJC_LDFLAGS = @OBJC_LDFLAGS@ + OBJDUMP = @OBJDUMP@ + OBJEXT = @OBJEXT@ +-OFA_CFLAGS = @OFA_CFLAGS@ +-OFA_LIBS = @OFA_LIBS@ +-ORCC = @ORCC@ + OTOOL = @OTOOL@ + OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ +@@ -376,68 +342,64 @@ + PLUGINDIR = @PLUGINDIR@ + POSUB = @POSUB@ + PROFILE_CFLAGS = @PROFILE_CFLAGS@ ++PULSE_0_9_11_CFLAGS = @PULSE_0_9_11_CFLAGS@ ++PULSE_0_9_11_LIBS = @PULSE_0_9_11_LIBS@ ++PULSE_0_9_12_CFLAGS = @PULSE_0_9_12_CFLAGS@ ++PULSE_0_9_12_LIBS = @PULSE_0_9_12_LIBS@ ++PULSE_0_9_13_CFLAGS = @PULSE_0_9_13_CFLAGS@ ++PULSE_0_9_13_LIBS = @PULSE_0_9_13_LIBS@ ++PULSE_0_9_15_CFLAGS = @PULSE_0_9_15_CFLAGS@ ++PULSE_0_9_15_LIBS = @PULSE_0_9_15_LIBS@ ++PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@ ++PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@ ++PULSE_CFLAGS = @PULSE_CFLAGS@ ++PULSE_LIBS = @PULSE_LIBS@ + PYTHON = @PYTHON@ + PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ + PYTHON_PLATFORM = @PYTHON_PLATFORM@ + PYTHON_PREFIX = @PYTHON_PREFIX@ + PYTHON_VERSION = @PYTHON_VERSION@ +-Q = @Q@ + RANLIB = @RANLIB@ +-RSVG_CFLAGS = @RSVG_CFLAGS@ +-RSVG_LIBS = @RSVG_LIBS@ +-SCHRO_CFLAGS = @SCHRO_CFLAGS@ +-SCHRO_LIBS = @SCHRO_LIBS@ +-SDL_CFLAGS = @SDL_CFLAGS@ +-SDL_CONFIG = @SDL_CONFIG@ +-SDL_LIBS = @SDL_LIBS@ ++RAW1394_CFLAGS = @RAW1394_CFLAGS@ ++RAW1394_LIBS = @RAW1394_LIBS@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ +-SLV2_CFLAGS = @SLV2_CFLAGS@ +-SLV2_LIBS = @SLV2_LIBS@ +-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +-SNDFILE_LIBS = @SNDFILE_LIBS@ +-SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@ +-SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@ +-SPC_LIBS = @SPC_LIBS@ ++SHOUT2_CFLAGS = @SHOUT2_CFLAGS@ ++SHOUT2_LIBS = @SHOUT2_LIBS@ ++SOUP_CFLAGS = @SOUP_CFLAGS@ ++SOUP_LIBS = @SOUP_LIBS@ ++SPEEX_CFLAGS = @SPEEX_CFLAGS@ ++SPEEX_LIBS = @SPEEX_LIBS@ + STRIP = @STRIP@ +-SWFDEC_CFLAGS = @SWFDEC_CFLAGS@ +-SWFDEC_LIBS = @SWFDEC_LIBS@ +-THEORADEC_CFLAGS = @THEORADEC_CFLAGS@ +-THEORADEC_LIBS = @THEORADEC_LIBS@ +-TIGER_CFLAGS = @TIGER_CFLAGS@ +-TIGER_LIBS = @TIGER_LIBS@ +-TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@ +-TIMIDITY_LIBS = @TIMIDITY_LIBS@ ++TAGLIB_CFLAGS = @TAGLIB_CFLAGS@ ++TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@ ++TAGLIB_LIBS = @TAGLIB_LIBS@ + USE_NLS = @USE_NLS@ +-V = @V@ + VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ + VALGRIND_LIBS = @VALGRIND_LIBS@ + VALGRIND_PATH = @VALGRIND_PATH@ +-VDPAU_CFLAGS = @VDPAU_CFLAGS@ +-VDPAU_LIBS = @VDPAU_LIBS@ + VERSION = @VERSION@ +-WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@ +-WILDMIDI_LIBS = @WILDMIDI_LIBS@ ++WARNING_CFLAGS = @WARNING_CFLAGS@ ++WARNING_CXXFLAGS = @WARNING_CXXFLAGS@ ++WAVPACK_CFLAGS = @WAVPACK_CFLAGS@ ++WAVPACK_LIBS = @WAVPACK_LIBS@ + WIN32_LIBS = @WIN32_LIBS@ +-X11_CFLAGS = @X11_CFLAGS@ +-X11_LIBS = @X11_LIBS@ +-XDG_LIBS = @XDG_LIBS@ ++XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@ ++XDAMAGE_LIBS = @XDAMAGE_LIBS@ ++XFIXES_CFLAGS = @XFIXES_CFLAGS@ ++XFIXES_LIBS = @XFIXES_LIBS@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ + XMKMF = @XMKMF@ +-XMP_1_99_5_CFLAGS = @XMP_1_99_5_CFLAGS@ +-XMP_1_99_5_LIBS = @XMP_1_99_5_LIBS@ +-XMP_CFLAGS = @XMP_CFLAGS@ +-XMP_LIBS = @XMP_LIBS@ +-XVID_LIBS = @XVID_LIBS@ ++XSHM_LIBS = @XSHM_LIBS@ ++XVIDEO_LIBS = @XVIDEO_LIBS@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ZBAR_CFLAGS = @ZBAR_CFLAGS@ +-ZBAR_LIBS = @ZBAR_LIBS@ ++ZLIB_LIBS = @ZLIB_LIBS@ + abs_builddir = @abs_builddir@ + abs_srcdir = @abs_srcdir@ + abs_top_builddir = @abs_top_builddir@ +@@ -491,7 +453,6 @@ + pythondir = @pythondir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ +-shavedir = @shavedir@ + srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +@@ -522,9 +483,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/rtpmux/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu farsight/rtpmux/Makefile'; \ + $(am__cd) $(top_srcdir) && \ +- $(AUTOMAKE) --gnu gst/rtpmux/Makefile ++ $(AUTOMAKE) --gnu farsight/rtpmux/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -575,7 +536,7 @@ + rm -f "$${dir}/so_locations"; \ + done + libgstrtpmux.la: $(libgstrtpmux_la_OBJECTS) $(libgstrtpmux_la_DEPENDENCIES) +- $(libgstrtpmux_la_LINK) -rpath $(plugindir) $(libgstrtpmux_la_OBJECTS) $(libgstrtpmux_la_LIBADD) $(LIBS) ++ $(AM_V_CCLD)$(libgstrtpmux_la_LINK) -rpath $(plugindir) $(libgstrtpmux_la_OBJECTS) $(libgstrtpmux_la_LIBADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -588,46 +549,52 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmux_la-gstrtpmuxer.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + libgstrtpmux_la-gstrtpmuxer.lo: gstrtpmuxer.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -MT libgstrtpmux_la-gstrtpmuxer.lo -MD -MP -MF $(DEPDIR)/libgstrtpmux_la-gstrtpmuxer.Tpo -c -o libgstrtpmux_la-gstrtpmuxer.lo `test -f 'gstrtpmuxer.c' || echo '$(srcdir)/'`gstrtpmuxer.c +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstrtpmux_la-gstrtpmuxer.Tpo $(DEPDIR)/libgstrtpmux_la-gstrtpmuxer.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -MT libgstrtpmux_la-gstrtpmuxer.lo -MD -MP -MF $(DEPDIR)/libgstrtpmux_la-gstrtpmuxer.Tpo -c -o libgstrtpmux_la-gstrtpmuxer.lo `test -f 'gstrtpmuxer.c' || echo '$(srcdir)/'`gstrtpmuxer.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpmux_la-gstrtpmuxer.Tpo $(DEPDIR)/libgstrtpmux_la-gstrtpmuxer.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstrtpmuxer.c' object='libgstrtpmux_la-gstrtpmuxer.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmux_la-gstrtpmuxer.lo `test -f 'gstrtpmuxer.c' || echo '$(srcdir)/'`gstrtpmuxer.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmux_la-gstrtpmuxer.lo `test -f 'gstrtpmuxer.c' || echo '$(srcdir)/'`gstrtpmuxer.c + + libgstrtpmux_la-gstrtpmux.lo: gstrtpmux.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -MT libgstrtpmux_la-gstrtpmux.lo -MD -MP -MF $(DEPDIR)/libgstrtpmux_la-gstrtpmux.Tpo -c -o libgstrtpmux_la-gstrtpmux.lo `test -f 'gstrtpmux.c' || echo '$(srcdir)/'`gstrtpmux.c +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstrtpmux_la-gstrtpmux.Tpo $(DEPDIR)/libgstrtpmux_la-gstrtpmux.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -MT libgstrtpmux_la-gstrtpmux.lo -MD -MP -MF $(DEPDIR)/libgstrtpmux_la-gstrtpmux.Tpo -c -o libgstrtpmux_la-gstrtpmux.lo `test -f 'gstrtpmux.c' || echo '$(srcdir)/'`gstrtpmux.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpmux_la-gstrtpmux.Tpo $(DEPDIR)/libgstrtpmux_la-gstrtpmux.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstrtpmux.c' object='libgstrtpmux_la-gstrtpmux.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmux_la-gstrtpmux.lo `test -f 'gstrtpmux.c' || echo '$(srcdir)/'`gstrtpmux.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmux_la-gstrtpmux.lo `test -f 'gstrtpmux.c' || echo '$(srcdir)/'`gstrtpmux.c + + libgstrtpmux_la-gstrtpdtmfmux.lo: gstrtpdtmfmux.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -MT libgstrtpmux_la-gstrtpdtmfmux.lo -MD -MP -MF $(DEPDIR)/libgstrtpmux_la-gstrtpdtmfmux.Tpo -c -o libgstrtpmux_la-gstrtpdtmfmux.lo `test -f 'gstrtpdtmfmux.c' || echo '$(srcdir)/'`gstrtpdtmfmux.c +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstrtpmux_la-gstrtpdtmfmux.Tpo $(DEPDIR)/libgstrtpmux_la-gstrtpdtmfmux.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -MT libgstrtpmux_la-gstrtpdtmfmux.lo -MD -MP -MF $(DEPDIR)/libgstrtpmux_la-gstrtpdtmfmux.Tpo -c -o libgstrtpmux_la-gstrtpdtmfmux.lo `test -f 'gstrtpdtmfmux.c' || echo '$(srcdir)/'`gstrtpdtmfmux.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpmux_la-gstrtpdtmfmux.Tpo $(DEPDIR)/libgstrtpmux_la-gstrtpdtmfmux.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstrtpdtmfmux.c' object='libgstrtpmux_la-gstrtpdtmfmux.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmux_la-gstrtpdtmfmux.lo `test -f 'gstrtpdtmfmux.c' || echo '$(srcdir)/'`gstrtpdtmfmux.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmux_la-gstrtpdtmfmux.lo `test -f 'gstrtpdtmfmux.c' || echo '$(srcdir)/'`gstrtpdtmfmux.c + + mostlyclean-libtool: + -rm -f *.lo +diff -Nur gst-plugins-good0.10-0.10.23.deb/farsight/valve/Makefile.in gst-plugins-good0.10-0.10.23/farsight/valve/Makefile.in +--- gst-plugins-good0.10-0.10.23.deb/farsight/valve/Makefile.in 2010-05-31 17:29:53.000000000 +0200 ++++ gst-plugins-good0.10-0.10.23/farsight/valve/Makefile.in 2010-05-31 17:30:16.000000000 +0200 +@@ -34,12 +34,13 @@ + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ +-subdir = gst/valve ++subdir = farsight/valve + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ + $(top_srcdir)/common/m4/as-auto-alt.m4 \ + $(top_srcdir)/common/m4/as-compiler-flag.m4 \ ++ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ + $(top_srcdir)/common/m4/as-objc.m4 \ + $(top_srcdir)/common/m4/as-python.m4 \ + $(top_srcdir)/common/m4/as-scrub-include.m4 \ +@@ -54,16 +55,15 @@ + $(top_srcdir)/common/m4/gst-feature.m4 \ + $(top_srcdir)/common/m4/gst-gettext.m4 \ + $(top_srcdir)/common/m4/gst-glib2.m4 \ +- $(top_srcdir)/common/m4/gst-platform.m4 \ + $(top_srcdir)/common/m4/gst-plugin-docs.m4 \ + $(top_srcdir)/common/m4/gst-plugindir.m4 \ + $(top_srcdir)/common/m4/gst-x11.m4 \ + $(top_srcdir)/common/m4/gst.m4 \ + $(top_srcdir)/common/m4/gtk-doc.m4 \ +- $(top_srcdir)/common/m4/pkg.m4 \ +- $(top_srcdir)/common/m4/shave.m4 $(top_srcdir)/m4/gettext.m4 \ +- $(top_srcdir)/m4/gst-alsa.m4 $(top_srcdir)/m4/gst-fionread.m4 \ +- $(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \ ++ $(top_srcdir)/common/m4/pkg.m4 $(top_srcdir)/m4/aalib.m4 \ ++ $(top_srcdir)/m4/esd.m4 $(top_srcdir)/m4/gconf-2.m4 \ ++ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \ ++ $(top_srcdir)/m4/gst-shout2.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ +@@ -104,7 +104,10 @@ + libgstvalve_la_DEPENDENCIES = $(am__DEPENDENCIES_1) + am_libgstvalve_la_OBJECTS = libgstvalve_la-gstvalve.lo + libgstvalve_la_OBJECTS = $(am_libgstvalve_la_OBJECTS) +-libgstvalve_la_LINK = $(LIBTOOL) --tag=CC \ ++AM_V_lt = $(am__v_lt_$(V)) ++am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) ++am__v_lt_0 = --silent ++libgstvalve_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(libgstvalve_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(libgstvalve_la_CFLAGS) $(CFLAGS) \ + $(libgstvalve_la_LDFLAGS) $(LDFLAGS) -o $@ +@@ -114,53 +117,55 @@ + am__mv = mv -f + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ ++ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ ++ $(AM_CFLAGS) $(CFLAGS) ++AM_V_CC = $(am__v_CC_$(V)) ++am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) ++am__v_CC_0 = @echo " CC " $@; ++AM_V_at = $(am__v_at_$(V)) ++am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) ++am__v_at_0 = @ + CCLD = $(CC) +-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ +- $(LDFLAGS) -o $@ ++LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++AM_V_CCLD = $(am__v_CCLD_$(V)) ++am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) ++am__v_CCLD_0 = @echo " CCLD " $@; ++AM_V_GEN = $(am__v_GEN_$(V)) ++am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) ++am__v_GEN_0 = @echo " GEN " $@; + SOURCES = $(libgstvalve_la_SOURCES) + DIST_SOURCES = $(libgstvalve_la_SOURCES) + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++AALIB_CFLAGS = @AALIB_CFLAGS@ ++AALIB_CONFIG = @AALIB_CONFIG@ ++AALIB_LIBS = @AALIB_LIBS@ + ACLOCAL = @ACLOCAL@ + ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +-ACMENC_CFLAGS = @ACMENC_CFLAGS@ +-ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@ +-ALSA_CFLAGS = @ALSA_CFLAGS@ +-ALSA_LIBS = @ALSA_LIBS@ +-AMRWB_LIBS = @AMRWB_LIBS@ + AMTAR = @AMTAR@ +-AM_MAKEFLAGS = @AM_MAKEFLAGS@ +-APEXSINK_CFLAGS = @APEXSINK_CFLAGS@ +-APEXSINK_LIBS = @APEXSINK_LIBS@ ++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ++ANNODEX_CFLAGS = @ANNODEX_CFLAGS@ ++ANNODEX_LIBS = @ANNODEX_LIBS@ + AR = @AR@ + AS = @AS@ +-ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@ +-ASSRENDER_LIBS = @ASSRENDER_LIBS@ + AUTOCONF = @AUTOCONF@ + AUTOHEADER = @AUTOHEADER@ + AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + BZ2_LIBS = @BZ2_LIBS@ ++CAIRO_CFLAGS = @CAIRO_CFLAGS@ ++CAIRO_LIBS = @CAIRO_LIBS@ + CC = @CC@ ++CCAS = @CCAS@ ++CCASDEPMODE = @CCASDEPMODE@ + CCASFLAGS = @CCASFLAGS@ + CCDEPMODE = @CCDEPMODE@ +-CDAUDIO_CFLAGS = @CDAUDIO_CFLAGS@ +-CDAUDIO_CONFIG = @CDAUDIO_CONFIG@ +-CDAUDIO_LIBS = @CDAUDIO_LIBS@ +-CELT_0_5_CFLAGS = @CELT_0_5_CFLAGS@ +-CELT_0_5_LIBS = @CELT_0_5_LIBS@ +-CELT_0_7_CFLAGS = @CELT_0_7_CFLAGS@ +-CELT_0_7_LIBS = @CELT_0_7_LIBS@ +-CELT_CFLAGS = @CELT_CFLAGS@ +-CELT_LIBS = @CELT_LIBS@ + CFLAGS = @CFLAGS@ +-COG_CFLAGS = @COG_CFLAGS@ +-COG_LIBS = @COG_LIBS@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CXX = @CXX@ +@@ -168,7 +173,6 @@ + CXXDEPMODE = @CXXDEPMODE@ + CXXFLAGS = @CXXFLAGS@ + CYGPATH_W = @CYGPATH_W@ +-DCCP_LIBS = @DCCP_LIBS@ + DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@ + DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@ + DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@ +@@ -177,61 +181,47 @@ + DEFS = @DEFS@ + DEPDIR = @DEPDIR@ + DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@ +-DIRAC_CFLAGS = @DIRAC_CFLAGS@ +-DIRAC_LIBS = @DIRAC_LIBS@ +-DIRECTDRAW_LIBS = @DIRECTDRAW_LIBS@ +-DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ +-DIRECTFB_LIBS = @DIRECTFB_LIBS@ ++DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@ ++DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@ + DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@ +-DIRECTX_CFLAGS = @DIRECTX_CFLAGS@ +-DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@ +-DIVXDEC_LIBS = @DIVXDEC_LIBS@ +-DIVXENC_LIBS = @DIVXENC_LIBS@ + DLLTOOL = @DLLTOOL@ + DSYMUTIL = @DSYMUTIL@ +-DTS_LIBS = @DTS_LIBS@ + DUMPBIN = @DUMPBIN@ +-DVDNAV_CFLAGS = @DVDNAV_CFLAGS@ +-DVDNAV_CONFIG = @DVDNAV_CONFIG@ +-DVDNAV_LIBS = @DVDNAV_LIBS@ ++DV1394_CFLAGS = @DV1394_CFLAGS@ ++DV1394_LIBS = @DV1394_LIBS@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + ERROR_CFLAGS = @ERROR_CFLAGS@ + ERROR_CXXFLAGS = @ERROR_CXXFLAGS@ ++ESD_CFLAGS = @ESD_CFLAGS@ ++ESD_CONFIG = @ESD_CONFIG@ ++ESD_LIBS = @ESD_LIBS@ + EXEEXT = @EXEEXT@ +-EXIF_CFLAGS = @EXIF_CFLAGS@ +-EXIF_LIBS = @EXIF_LIBS@ +-F77 = @F77@ +-FAAC_LIBS = @FAAC_LIBS@ +-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@ +-FAAD_LIBS = @FAAD_LIBS@ +-FC = @FC@ + FFLAGS = @FFLAGS@ + FGREP = @FGREP@ +-FLITE_CFLAGS = @FLITE_CFLAGS@ +-FLITE_LIBS = @FLITE_LIBS@ ++FLAC_CFLAGS = @FLAC_CFLAGS@ ++FLAC_LIBS = @FLAC_LIBS@ ++GCONFTOOL = @GCONFTOOL@ ++GCONF_CFLAGS = @GCONF_CFLAGS@ ++GCONF_LIBS = @GCONF_LIBS@ ++GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ ++GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ + GCOV = @GCOV@ + GCOV_CFLAGS = @GCOV_CFLAGS@ + GCOV_LIBS = @GCOV_LIBS@ ++GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ ++GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ + GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +-GIO_CFLAGS = @GIO_CFLAGS@ +-GIO_LIBS = @GIO_LIBS@ + GLIB_CFLAGS = @GLIB_CFLAGS@ + GLIB_LIBS = @GLIB_LIBS@ + GLIB_PREFIX = @GLIB_PREFIX@ + GLIB_REQ = @GLIB_REQ@ +-GME_LIBS = @GME_LIBS@ +-GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@ +-GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@ + GMSGFMT = @GMSGFMT@ + GMSGFMT_015 = @GMSGFMT_015@ +-GMYTH_CFLAGS = @GMYTH_CFLAGS@ +-GMYTH_LIBS = @GMYTH_LIBS@ + GREP = @GREP@ +-GSM_LIBS = @GSM_LIBS@ + GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@ + GSTPB_PREFIX = @GSTPB_PREFIX@ + GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@ +@@ -248,6 +238,7 @@ + GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@ + GST_LIBS = @GST_LIBS@ + GST_LICENSE = @GST_LICENSE@ ++GST_LT_LDFLAGS = @GST_LT_LDFLAGS@ + GST_MAJORMINOR = @GST_MAJORMINOR@ + GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@ + GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@ +@@ -264,20 +255,20 @@ + GTKDOC_CHECK = @GTKDOC_CHECK@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_AMRWB = @HAVE_AMRWB@ ++GUDEV_CFLAGS = @GUDEV_CFLAGS@ ++GUDEV_LIBS = @GUDEV_LIBS@ ++HAL_CFLAGS = @HAL_CFLAGS@ ++HAL_LIBS = @HAL_LIBS@ ++HAVE_AVC1394 = @HAVE_AVC1394@ + HAVE_BZ2 = @HAVE_BZ2@ + HAVE_CXX = @HAVE_CXX@ +-HAVE_DIRECTDRAW = @HAVE_DIRECTDRAW@ + HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@ +-HAVE_DTS = @HAVE_DTS@ +-HAVE_FAAC = @HAVE_FAAC@ +-HAVE_FAAD = @HAVE_FAAD@ +-HAVE_FLITE = @HAVE_FLITE@ +-HAVE_GSM = @HAVE_GSM@ +-HAVE_JP2K = @HAVE_JP2K@ +-HAVE_NAS = @HAVE_NAS@ ++HAVE_GCONFTOOL = @HAVE_GCONFTOOL@ ++HAVE_ROM1394 = @HAVE_ROM1394@ ++HAVE_SPEEX = @HAVE_SPEEX@ + HAVE_X = @HAVE_X@ +-HAVE_X11 = @HAVE_X11@ ++HAVE_XSHM = @HAVE_XSHM@ ++HAVE_ZLIB = @HAVE_ZLIB@ + HTML_DIR = @HTML_DIR@ + INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ +@@ -286,62 +277,40 @@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + INTLLIBS = @INTLLIBS@ + INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +-IPTC_CFLAGS = @IPTC_CFLAGS@ +-IPTC_LIBS = @IPTC_LIBS@ +-JACK_CFLAGS = @JACK_CFLAGS@ +-JACK_LIBS = @JACK_LIBS@ +-JP2K_LIBS = @JP2K_LIBS@ +-KATE_CFLAGS = @KATE_CFLAGS@ +-KATE_LIBS = @KATE_LIBS@ ++JPEG_LIBS = @JPEG_LIBS@ + LD = @LD@ + LDFLAGS = @LDFLAGS@ +-LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@ +-LIBDC1394_LIBS = @LIBDC1394_LIBS@ +-LIBDIR = @LIBDIR@ ++LIBCACA_CFLAGS = @LIBCACA_CFLAGS@ ++LIBCACA_CONFIG = @LIBCACA_CONFIG@ ++LIBCACA_LIBS = @LIBCACA_LIBS@ ++LIBDV_CFLAGS = @LIBDV_CFLAGS@ ++LIBDV_LIBS = @LIBDV_LIBS@ + LIBICONV = @LIBICONV@ ++LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@ ++LIBIEC61883_LIBS = @LIBIEC61883_LIBS@ + LIBINTL = @LIBINTL@ + LIBM = @LIBM@ +-LIBMMS_CFLAGS = @LIBMMS_CFLAGS@ +-LIBMMS_LIBS = @LIBMMS_LIBS@ + LIBOBJS = @LIBOBJS@ + LIBOIL_CFLAGS = @LIBOIL_CFLAGS@ + LIBOIL_LIBS = @LIBOIL_LIBS@ ++LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ ++LIBPNG_LIBS = @LIBPNG_LIBS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ ++LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ ++LIBV4L2_LIBS = @LIBV4L2_LIBS@ + LIPO = @LIPO@ + LN_S = @LN_S@ + LOCALEDIR = @LOCALEDIR@ +-LRDF_CFLAGS = @LRDF_CFLAGS@ +-LRDF_LIBS = @LRDF_LIBS@ + LTLIBICONV = @LTLIBICONV@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ +-MAKEFLAGS = @MAKEFLAGS@ + MAKEINFO = @MAKEINFO@ +-METADATA_CFLAGS = @METADATA_CFLAGS@ +-METADATA_LIBS = @METADATA_LIBS@ +-MIMIC_CFLAGS = @MIMIC_CFLAGS@ +-MIMIC_LIBS = @MIMIC_LIBS@ +-MJPEG_CFLAGS = @MJPEG_CFLAGS@ +-MJPEG_LIBS = @MJPEG_LIBS@ + MKDIR_P = @MKDIR_P@ +-MODPLUG_CFLAGS = @MODPLUG_CFLAGS@ +-MODPLUG_LIBS = @MODPLUG_LIBS@ +-MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@ +-MPEG2ENC_LIBS = @MPEG2ENC_LIBS@ +-MPLEX_CFLAGS = @MPLEX_CFLAGS@ +-MPLEX_LIBS = @MPLEX_LIBS@ + MSGFMT = @MSGFMT@ + MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ +-MUSEPACK_LIBS = @MUSEPACK_LIBS@ +-MUSICBRAINZ_CFLAGS = @MUSICBRAINZ_CFLAGS@ +-MUSICBRAINZ_LIBS = @MUSICBRAINZ_LIBS@ +-NAS_CFLAGS = @NAS_CFLAGS@ +-NAS_LIBS = @NAS_LIBS@ +-NEON_CFLAGS = @NEON_CFLAGS@ +-NEON_LIBS = @NEON_LIBS@ + NM = @NM@ + NMEDIT = @NMEDIT@ + OBJC = @OBJC@ +@@ -349,9 +318,6 @@ + OBJC_LDFLAGS = @OBJC_LDFLAGS@ + OBJDUMP = @OBJDUMP@ + OBJEXT = @OBJEXT@ +-OFA_CFLAGS = @OFA_CFLAGS@ +-OFA_LIBS = @OFA_LIBS@ +-ORCC = @ORCC@ + OTOOL = @OTOOL@ + OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ +@@ -371,68 +337,64 @@ + PLUGINDIR = @PLUGINDIR@ + POSUB = @POSUB@ + PROFILE_CFLAGS = @PROFILE_CFLAGS@ ++PULSE_0_9_11_CFLAGS = @PULSE_0_9_11_CFLAGS@ ++PULSE_0_9_11_LIBS = @PULSE_0_9_11_LIBS@ ++PULSE_0_9_12_CFLAGS = @PULSE_0_9_12_CFLAGS@ ++PULSE_0_9_12_LIBS = @PULSE_0_9_12_LIBS@ ++PULSE_0_9_13_CFLAGS = @PULSE_0_9_13_CFLAGS@ ++PULSE_0_9_13_LIBS = @PULSE_0_9_13_LIBS@ ++PULSE_0_9_15_CFLAGS = @PULSE_0_9_15_CFLAGS@ ++PULSE_0_9_15_LIBS = @PULSE_0_9_15_LIBS@ ++PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@ ++PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@ ++PULSE_CFLAGS = @PULSE_CFLAGS@ ++PULSE_LIBS = @PULSE_LIBS@ + PYTHON = @PYTHON@ + PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ + PYTHON_PLATFORM = @PYTHON_PLATFORM@ + PYTHON_PREFIX = @PYTHON_PREFIX@ + PYTHON_VERSION = @PYTHON_VERSION@ +-Q = @Q@ + RANLIB = @RANLIB@ +-RSVG_CFLAGS = @RSVG_CFLAGS@ +-RSVG_LIBS = @RSVG_LIBS@ +-SCHRO_CFLAGS = @SCHRO_CFLAGS@ +-SCHRO_LIBS = @SCHRO_LIBS@ +-SDL_CFLAGS = @SDL_CFLAGS@ +-SDL_CONFIG = @SDL_CONFIG@ +-SDL_LIBS = @SDL_LIBS@ ++RAW1394_CFLAGS = @RAW1394_CFLAGS@ ++RAW1394_LIBS = @RAW1394_LIBS@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ +-SLV2_CFLAGS = @SLV2_CFLAGS@ +-SLV2_LIBS = @SLV2_LIBS@ +-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +-SNDFILE_LIBS = @SNDFILE_LIBS@ +-SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@ +-SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@ +-SPC_LIBS = @SPC_LIBS@ ++SHOUT2_CFLAGS = @SHOUT2_CFLAGS@ ++SHOUT2_LIBS = @SHOUT2_LIBS@ ++SOUP_CFLAGS = @SOUP_CFLAGS@ ++SOUP_LIBS = @SOUP_LIBS@ ++SPEEX_CFLAGS = @SPEEX_CFLAGS@ ++SPEEX_LIBS = @SPEEX_LIBS@ + STRIP = @STRIP@ +-SWFDEC_CFLAGS = @SWFDEC_CFLAGS@ +-SWFDEC_LIBS = @SWFDEC_LIBS@ +-THEORADEC_CFLAGS = @THEORADEC_CFLAGS@ +-THEORADEC_LIBS = @THEORADEC_LIBS@ +-TIGER_CFLAGS = @TIGER_CFLAGS@ +-TIGER_LIBS = @TIGER_LIBS@ +-TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@ +-TIMIDITY_LIBS = @TIMIDITY_LIBS@ ++TAGLIB_CFLAGS = @TAGLIB_CFLAGS@ ++TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@ ++TAGLIB_LIBS = @TAGLIB_LIBS@ + USE_NLS = @USE_NLS@ +-V = @V@ + VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ + VALGRIND_LIBS = @VALGRIND_LIBS@ + VALGRIND_PATH = @VALGRIND_PATH@ +-VDPAU_CFLAGS = @VDPAU_CFLAGS@ +-VDPAU_LIBS = @VDPAU_LIBS@ + VERSION = @VERSION@ +-WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@ +-WILDMIDI_LIBS = @WILDMIDI_LIBS@ ++WARNING_CFLAGS = @WARNING_CFLAGS@ ++WARNING_CXXFLAGS = @WARNING_CXXFLAGS@ ++WAVPACK_CFLAGS = @WAVPACK_CFLAGS@ ++WAVPACK_LIBS = @WAVPACK_LIBS@ + WIN32_LIBS = @WIN32_LIBS@ +-X11_CFLAGS = @X11_CFLAGS@ +-X11_LIBS = @X11_LIBS@ +-XDG_LIBS = @XDG_LIBS@ ++XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@ ++XDAMAGE_LIBS = @XDAMAGE_LIBS@ ++XFIXES_CFLAGS = @XFIXES_CFLAGS@ ++XFIXES_LIBS = @XFIXES_LIBS@ + XGETTEXT = @XGETTEXT@ + XGETTEXT_015 = @XGETTEXT_015@ + XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ + XMKMF = @XMKMF@ +-XMP_1_99_5_CFLAGS = @XMP_1_99_5_CFLAGS@ +-XMP_1_99_5_LIBS = @XMP_1_99_5_LIBS@ +-XMP_CFLAGS = @XMP_CFLAGS@ +-XMP_LIBS = @XMP_LIBS@ +-XVID_LIBS = @XVID_LIBS@ ++XSHM_LIBS = @XSHM_LIBS@ ++XVIDEO_LIBS = @XVIDEO_LIBS@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ +-ZBAR_CFLAGS = @ZBAR_CFLAGS@ +-ZBAR_LIBS = @ZBAR_LIBS@ ++ZLIB_LIBS = @ZLIB_LIBS@ + abs_builddir = @abs_builddir@ + abs_srcdir = @abs_srcdir@ + abs_top_builddir = @abs_top_builddir@ +@@ -486,7 +448,6 @@ + pythondir = @pythondir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ +-shavedir = @shavedir@ + srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +@@ -512,9 +473,9 @@ + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/valve/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu farsight/valve/Makefile'; \ + $(am__cd) $(top_srcdir) && \ +- $(AUTOMAKE) --gnu gst/valve/Makefile ++ $(AUTOMAKE) --gnu farsight/valve/Makefile + .PRECIOUS: Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ +@@ -565,7 +526,7 @@ + rm -f "$${dir}/so_locations"; \ + done + libgstvalve.la: $(libgstvalve_la_OBJECTS) $(libgstvalve_la_DEPENDENCIES) +- $(libgstvalve_la_LINK) -rpath $(plugindir) $(libgstvalve_la_OBJECTS) $(libgstvalve_la_LIBADD) $(LIBS) ++ $(AM_V_CCLD)$(libgstvalve_la_LINK) -rpath $(plugindir) $(libgstvalve_la_OBJECTS) $(libgstvalve_la_LIBADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -576,32 +537,36 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvalve_la-gstvalve.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + libgstvalve_la-gstvalve.lo: gstvalve.c +-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstvalve_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvalve_la_CFLAGS) $(CFLAGS) -MT libgstvalve_la-gstvalve.lo -MD -MP -MF $(DEPDIR)/libgstvalve_la-gstvalve.Tpo -c -o libgstvalve_la-gstvalve.lo `test -f 'gstvalve.c' || echo '$(srcdir)/'`gstvalve.c +-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstvalve_la-gstvalve.Tpo $(DEPDIR)/libgstvalve_la-gstvalve.Plo ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvalve_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvalve_la_CFLAGS) $(CFLAGS) -MT libgstvalve_la-gstvalve.lo -MD -MP -MF $(DEPDIR)/libgstvalve_la-gstvalve.Tpo -c -o libgstvalve_la-gstvalve.lo `test -f 'gstvalve.c' || echo '$(srcdir)/'`gstvalve.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvalve_la-gstvalve.Tpo $(DEPDIR)/libgstvalve_la-gstvalve.Plo ++@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstvalve.c' object='libgstvalve_la-gstvalve.lo' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstvalve_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvalve_la_CFLAGS) $(CFLAGS) -c -o libgstvalve_la-gstvalve.lo `test -f 'gstvalve.c' || echo '$(srcdir)/'`gstvalve.c ++@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvalve_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvalve_la_CFLAGS) $(CFLAGS) -c -o libgstvalve_la-gstvalve.lo `test -f 'gstvalve.c' || echo '$(srcdir)/'`gstvalve.c + + mostlyclean-libtool: + -rm -f *.lo +diff -Nur gst-plugins-good0.10-0.10.23.deb/Makefile.in gst-plugins-good0.10-0.10.23/Makefile.in +--- gst-plugins-good0.10-0.10.23.deb/Makefile.in 2010-05-31 17:29:53.000000000 +0200 ++++ gst-plugins-good0.10-0.10.23/Makefile.in 2010-05-31 17:30:24.000000000 +0200 +@@ -475,6 +475,7 @@ + @USE_GCONFTOOL_TRUE@GCONF_DIR = gconf + ALWAYS_SUBDIRS = \ + gst sys ext \ ++ farsight \ + tests \ + docs \ + po \ --- gst-plugins-good0.10-0.10.23.orig/debian/patches/03_pulse-rank.patch +++ gst-plugins-good0.10-0.10.23/debian/patches/03_pulse-rank.patch @@ -0,0 +1,16 @@ +--- ext/pulse/plugin.c.old 2008-07-20 12:13:48.000000000 +0200 ++++ ext/pulse/plugin.c 2008-07-20 12:14:23.000000000 +0200 +@@ -33,11 +33,11 @@ + plugin_init (GstPlugin * plugin) + { + +- if (!gst_element_register (plugin, "pulsesink", GST_RANK_PRIMARY, ++ if (!gst_element_register (plugin, "pulsesink", GST_RANK_PRIMARY+10, + GST_TYPE_PULSESINK)) + return FALSE; + +- if (!gst_element_register (plugin, "pulsesrc", GST_RANK_PRIMARY, ++ if (!gst_element_register (plugin, "pulsesrc", GST_RANK_PRIMARY+10, + GST_TYPE_PULSESRC)) + return FALSE; + --- gst-plugins-good0.10-0.10.23.orig/debian/patches/99_ltmain_as-needed.patch +++ gst-plugins-good0.10-0.10.23/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-good0.10-0.10.23.orig/debian/patches/04_move_farsight_plugins_to_good.patch +++ gst-plugins-good0.10-0.10.23/debian/patches/04_move_farsight_plugins_to_good.patch @@ -0,0 +1,13163 @@ +Description: Move plugins required by farsight to -good +Bug-Ubuntu: https://bugs.launchpad.net/bugs/388898 +Bug: http://bugzilla.gnome.org/show_bug.cgi?id=587219 +Origin: vendor, https://bugzilla.redhat.com/show_bug.cgi?id=507009 +Origin: rebased on gst-plugins-bad 0.10.18 + +diff -Naur gst-plugins-good0.10-0.10.23.ori/configure.ac gst-plugins-good0.10-0.10.23/configure.ac +--- gst-plugins-good0.10-0.10.23.ori/configure.ac 2010-03-08 19:16:14.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/configure.ac 2010-03-29 19:40:25.000000000 -0400 +@@ -1122,6 +1122,12 @@ + sys/v4l2/Makefile + sys/waveform/Makefile + sys/ximage/Makefile ++farsight/Makefile ++farsight/valve/Makefile ++farsight/liveadder/Makefile ++farsight/dtmf/Makefile ++farsight/rtpmux/Makefile ++farsight/autoconvert/Makefile + po/Makefile.in + tests/Makefile + tests/check/Makefile +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/autoconvert/gstautoconvert.c gst-plugins-good0.10-0.10.23/farsight/autoconvert/gstautoconvert.c +--- gst-plugins-good0.10-0.10.23.ori/farsight/autoconvert/gstautoconvert.c 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/autoconvert/gstautoconvert.c 2009-11-05 16:29:50.000000000 -0500 +@@ -0,0 +1,1566 @@ ++/* GStreamer ++ * ++ * Copyright 2007-2008 Collabora Ltd ++ * @author: Olivier Crete ++ * Copyright 2007-2008 Nokia ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++/** ++ * SECTION:element-autoconvert ++ * ++ * The #autoconvert element has one sink and one source pad. It will look for ++ * other elements that also have one sink and one source pad. ++ * It will then pick an element that matches the caps on both sides. ++ * If the caps change, it may change the selected element if the current one ++ * no longer matches the caps. ++ * ++ * The list of element it will look into can be specified in the ++ * #GstAutoConvert::factories property, otherwise it will look at all available ++ * elements. ++ */ ++ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include "gstautoconvert.h" ++ ++#include ++ ++GST_DEBUG_CATEGORY (autoconvert_debug); ++#define GST_CAT_DEFAULT (autoconvert_debug) ++ ++#define DEFAULT_INITIAL_IDENTITY FALSE ++ ++#define GST_AUTOCONVERT_LOCK(ac) GST_OBJECT_LOCK (ac) ++#define GST_AUTOCONVERT_UNLOCK(ac) GST_OBJECT_UNLOCK (ac) ++ ++/* elementfactory information */ ++static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", ++ GST_PAD_SINK, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS_ANY); ++ ++static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", ++ GST_PAD_SRC, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS_ANY); ++ ++static GstStaticPadTemplate sink_internal_template = ++GST_STATIC_PAD_TEMPLATE ("sink_internal", ++ GST_PAD_SINK, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS_ANY); ++ ++static GstStaticPadTemplate src_internal_template = ++GST_STATIC_PAD_TEMPLATE ("src_internal", ++ GST_PAD_SRC, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS_ANY); ++ ++/* GstAutoConvert signals and args */ ++enum ++{ ++ /* FILL ME */ ++ LAST_SIGNAL ++}; ++ ++enum ++{ ++ PROP_0, ++ PROP_FACTORIES, ++ PROP_INITIAL_IDENTITY ++}; ++ ++static void gst_auto_convert_set_property (GObject * object, ++ guint prop_id, const GValue * value, GParamSpec * pspec); ++static void gst_auto_convert_get_property (GObject * object, ++ guint prop_id, GValue * value, GParamSpec * pspec); ++static void gst_auto_convert_dispose (GObject * object); ++ ++static GstStateChangeReturn gst_auto_convert_change_state (GstElement * element, ++ GstStateChange transition); ++ ++static GstElement *gst_auto_convert_get_subelement (GstAutoConvert * ++ autoconvert, gboolean query_only); ++static GstPad *gst_auto_convert_get_internal_sinkpad (GstAutoConvert * ++ autoconvert); ++static GstPad *gst_auto_convert_get_internal_srcpad (GstAutoConvert * ++ autoconvert); ++ ++static gboolean gst_auto_convert_sink_setcaps (GstPad * pad, GstCaps * caps); ++static GstCaps *gst_auto_convert_sink_getcaps (GstPad * pad); ++static GstFlowReturn gst_auto_convert_sink_chain (GstPad * pad, ++ GstBuffer * buffer); ++static gboolean gst_auto_convert_sink_event (GstPad * pad, GstEvent * event); ++static gboolean gst_auto_convert_sink_query (GstPad * pad, GstQuery * query); ++static const GstQueryType *gst_auto_convert_sink_query_type (GstPad * pad); ++static GstFlowReturn gst_auto_convert_sink_buffer_alloc (GstPad * pad, ++ guint64 offset, guint size, GstCaps * caps, GstBuffer ** buf); ++static void gst_auto_convert_sink_fixatecaps (GstPad * pad, GstCaps * caps); ++ ++static gboolean gst_auto_convert_src_event (GstPad * pad, GstEvent * event); ++static gboolean gst_auto_convert_src_query (GstPad * pad, GstQuery * query); ++static const GstQueryType *gst_auto_convert_src_query_type (GstPad * pad); ++ ++static GstFlowReturn gst_auto_convert_internal_sink_chain (GstPad * pad, ++ GstBuffer * buffer); ++static gboolean gst_auto_convert_internal_sink_event (GstPad * pad, ++ GstEvent * event); ++static gboolean gst_auto_convert_internal_sink_query (GstPad * pad, ++ GstQuery * query); ++static const GstQueryType *gst_auto_convert_internal_sink_query_type (GstPad * ++ pad); ++static GstCaps *gst_auto_convert_internal_sink_getcaps (GstPad * pad); ++static GstFlowReturn gst_auto_convert_internal_sink_buffer_alloc (GstPad * pad, ++ guint64 offset, guint size, GstCaps * caps, GstBuffer ** buf); ++static void gst_auto_convert_internal_sink_fixatecaps (GstPad * pad, ++ GstCaps * caps); ++ ++static gboolean gst_auto_convert_internal_src_event (GstPad * pad, ++ GstEvent * event); ++static gboolean gst_auto_convert_internal_src_query (GstPad * pad, ++ GstQuery * query); ++static const GstQueryType *gst_auto_convert_internal_src_query_type (GstPad * ++ pad); ++ ++static GList *gst_auto_convert_load_factories (GstAutoConvert * autoconvert); ++static GstElement ++ * gst_auto_convert_get_or_make_element_from_factory (GstAutoConvert * ++ autoconvert, GstElementFactory * factory); ++static gboolean gst_auto_convert_activate_element (GstAutoConvert * autoconvert, ++ GstElement * element, GstCaps * caps); ++ ++static GQuark internal_srcpad_quark = 0; ++static GQuark internal_sinkpad_quark = 0; ++static GQuark parent_quark = 0; ++ ++static void ++gst_auto_convert_do_init (GType type) ++{ ++ GST_DEBUG_CATEGORY_INIT (autoconvert_debug, "autoconvert", 0, ++ "Auto convert based on caps"); ++ ++ internal_srcpad_quark = g_quark_from_static_string ("internal_srcpad"); ++ internal_sinkpad_quark = g_quark_from_static_string ("internal_sinkpad"); ++ parent_quark = g_quark_from_static_string ("parent"); ++} ++ ++GST_BOILERPLATE_FULL (GstAutoConvert, gst_auto_convert, GstBin, ++ GST_TYPE_BIN, gst_auto_convert_do_init); ++ ++static void ++gst_auto_convert_base_init (gpointer klass) ++{ ++ GstElementClass *element_class = GST_ELEMENT_CLASS (klass); ++ ++ gst_element_class_add_pad_template (element_class, ++ gst_static_pad_template_get (&srctemplate)); ++ gst_element_class_add_pad_template (element_class, ++ gst_static_pad_template_get (&sinktemplate)); ++ ++ gst_element_class_set_details_simple (element_class, ++ "Select convertor based on caps", "Generic/Bin", ++ "Selects the right transform element based on the caps", ++ "Olivier Crete "); ++} ++ ++static void ++gst_auto_convert_class_init (GstAutoConvertClass * klass) ++{ ++ GObjectClass *gobject_class = (GObjectClass *) klass; ++ GstElementClass *gstelement_class = (GstElementClass *) klass; ++ ++ gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_auto_convert_dispose); ++ ++ gobject_class->set_property = gst_auto_convert_set_property; ++ gobject_class->get_property = gst_auto_convert_get_property; ++ ++ g_object_class_install_property (gobject_class, PROP_FACTORIES, ++ g_param_spec_pointer ("factories", ++ "GList of GstElementFactory", ++ "GList of GstElementFactory objects to pick from (the element takes" ++ " ownership of the list (NULL means it will go through all possible" ++ " elements), can only be set once", ++ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); ++ ++ g_object_class_install_property (gobject_class, PROP_INITIAL_IDENTITY, ++ g_param_spec_boolean ("initial-identity", ++ "Install identity initially", ++ "If true, then the identity element will be installed initially " ++ "and used for event passing until the first data buffer arrives ", ++ DEFAULT_INITIAL_IDENTITY, G_PARAM_READWRITE)); ++ ++ gstelement_class->change_state = ++ GST_DEBUG_FUNCPTR (gst_auto_convert_change_state); ++} ++ ++static void ++gst_auto_convert_init (GstAutoConvert * autoconvert, ++ GstAutoConvertClass * klass) ++{ ++ autoconvert->sinkpad = ++ gst_pad_new_from_static_template (&sinktemplate, "sink"); ++ autoconvert->srcpad = gst_pad_new_from_static_template (&srctemplate, "src"); ++ ++ gst_pad_set_setcaps_function (autoconvert->sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_sink_setcaps)); ++ gst_pad_set_getcaps_function (autoconvert->sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_sink_getcaps)); ++ gst_pad_set_chain_function (autoconvert->sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_sink_chain)); ++ gst_pad_set_event_function (autoconvert->sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_sink_event)); ++ gst_pad_set_query_function (autoconvert->sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_sink_query)); ++ gst_pad_set_query_type_function (autoconvert->sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_sink_query_type)); ++ gst_pad_set_bufferalloc_function (autoconvert->sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_sink_buffer_alloc)); ++ ++ gst_pad_set_event_function (autoconvert->srcpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_src_event)); ++ gst_pad_set_query_function (autoconvert->srcpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_src_query)); ++ gst_pad_set_query_type_function (autoconvert->srcpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_src_query_type)); ++ ++ gst_element_add_pad (GST_ELEMENT (autoconvert), autoconvert->sinkpad); ++ gst_element_add_pad (GST_ELEMENT (autoconvert), autoconvert->srcpad); ++ ++ gst_segment_init (&autoconvert->sink_segment, GST_FORMAT_UNDEFINED); ++ ++ autoconvert->initial_identity = DEFAULT_INITIAL_IDENTITY; ++} ++ ++static void ++gst_auto_convert_dispose (GObject * object) ++{ ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (object); ++ ++ gst_pad_set_fixatecaps_function (autoconvert->sinkpad, NULL); ++ ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ if (autoconvert->current_subelement) { ++ gst_object_unref (autoconvert->current_subelement); ++ autoconvert->current_subelement = NULL; ++ autoconvert->current_internal_sinkpad = NULL; ++ autoconvert->current_internal_srcpad = NULL; ++ } ++ ++ g_list_foreach (autoconvert->cached_events, (GFunc) gst_mini_object_unref, ++ NULL); ++ g_list_free (autoconvert->cached_events); ++ autoconvert->cached_events = NULL; ++ ++ if (autoconvert->factories) { ++ gst_plugin_feature_list_free (autoconvert->factories); ++ autoconvert->factories = NULL; ++ } ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ ++ G_OBJECT_CLASS (parent_class)->dispose (object); ++} ++ ++static void ++gst_auto_convert_set_property (GObject * object, ++ guint prop_id, const GValue * value, GParamSpec * pspec) ++{ ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (object); ++ ++ switch (prop_id) { ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ case PROP_FACTORIES: ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ if (autoconvert->factories == NULL) { ++ GList *factories = g_value_get_pointer (value); ++ autoconvert->factories = g_list_copy (factories); ++ g_list_foreach (autoconvert->factories, (GFunc) g_object_ref, NULL); ++ } else ++ GST_WARNING_OBJECT (object, "Can not reset factories after they" ++ " have been set or auto-discovered"); ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ break; ++ case PROP_INITIAL_IDENTITY: ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ autoconvert->initial_identity = g_value_get_boolean (value); ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ break; ++ } ++} ++ ++static void ++gst_auto_convert_get_property (GObject * object, ++ guint prop_id, GValue * value, GParamSpec * pspec) ++{ ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (object); ++ ++ switch (prop_id) { ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ case PROP_FACTORIES: ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ g_value_set_pointer (value, &autoconvert->factories); ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ break; ++ case PROP_INITIAL_IDENTITY: ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ g_value_set_boolean (value, autoconvert->initial_identity); ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ break; ++ } ++} ++ ++static GstStateChangeReturn ++gst_auto_convert_change_state (GstElement * element, GstStateChange transition) ++{ ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (element); ++ GstStateChangeReturn ret; ++ ++ switch (transition) { ++ default: ++ break; ++ } ++ ++ ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); ++ if (ret == GST_STATE_CHANGE_FAILURE) ++ return ret; ++ ++ switch (transition) { ++ case GST_STATE_CHANGE_PAUSED_TO_READY: ++ g_list_foreach (autoconvert->cached_events, (GFunc) gst_mini_object_unref, ++ NULL); ++ g_list_free (autoconvert->cached_events); ++ autoconvert->cached_events = NULL; ++ break; ++ default: ++ break; ++ } ++ ++ return ret; ++} ++ ++static GstElement * ++gst_auto_convert_get_element_by_type (GstAutoConvert * autoconvert, GType type) ++{ ++ GstIterator *iter = NULL; ++ GstElement *elem = NULL; ++ gboolean done; ++ ++ g_return_val_if_fail (type != 0, NULL); ++ ++ iter = gst_bin_iterate_elements (GST_BIN (autoconvert)); ++ ++ if (!iter) ++ return NULL; ++ ++ done = FALSE; ++ while (!done) { ++ switch (gst_iterator_next (iter, (gpointer) & elem)) { ++ case GST_ITERATOR_OK: ++ if (G_OBJECT_TYPE (elem) == type) ++ done = TRUE; ++ else ++ gst_object_unref (elem); ++ break; ++ case GST_ITERATOR_RESYNC: ++ gst_iterator_resync (iter); ++ elem = NULL; ++ break; ++ case GST_ITERATOR_ERROR: ++ GST_ERROR ("Error iterating elements in bin"); ++ elem = NULL; ++ done = TRUE; ++ break; ++ case GST_ITERATOR_DONE: ++ elem = NULL; ++ done = TRUE; ++ break; ++ } ++ } ++ gst_iterator_free (iter); ++ ++ return elem; ++} ++ ++/** ++ * get_pad_by_direction: ++ * @element: The Element ++ * @direction: The direction ++ * ++ * Gets a #GstPad that goes in the requested direction. I will return NULL ++ * if there is no pad or if there is more than one pad in this direction ++ */ ++ ++static GstPad * ++get_pad_by_direction (GstElement * element, GstPadDirection direction) ++{ ++ GstIterator *iter = gst_element_iterate_pads (element); ++ GstPad *pad = NULL; ++ GstPad *selected_pad = NULL; ++ gboolean done; ++ ++ if (!iter) ++ return NULL; ++ ++ done = FALSE; ++ while (!done) { ++ switch (gst_iterator_next (iter, (gpointer) & pad)) { ++ case GST_ITERATOR_OK: ++ if (gst_pad_get_direction (pad) == direction) { ++ /* We check if there is more than one pad in this direction, ++ * if there is, we return NULL so that the element is refused ++ */ ++ if (selected_pad) { ++ done = TRUE; ++ gst_object_unref (selected_pad); ++ selected_pad = NULL; ++ } else { ++ selected_pad = pad; ++ } ++ } else { ++ gst_object_unref (pad); ++ } ++ break; ++ case GST_ITERATOR_RESYNC: ++ if (selected_pad) { ++ gst_object_unref (selected_pad); ++ selected_pad = NULL; ++ } ++ gst_iterator_resync (iter); ++ break; ++ case GST_ITERATOR_ERROR: ++ GST_ERROR ("Error iterating pads of element %s", ++ GST_OBJECT_NAME (element)); ++ gst_object_unref (selected_pad); ++ selected_pad = NULL; ++ done = TRUE; ++ break; ++ case GST_ITERATOR_DONE: ++ done = TRUE; ++ break; ++ } ++ } ++ gst_iterator_free (iter); ++ ++ if (!selected_pad) ++ GST_ERROR ("Did not find pad of direction %d in %s", ++ direction, GST_OBJECT_NAME (element)); ++ ++ return selected_pad; ++} ++ ++static GstElement * ++gst_auto_convert_get_subelement (GstAutoConvert * autoconvert, ++ gboolean query_only) ++{ ++ GstElement *element = NULL; ++ gboolean initial_identity; ++ ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ if (autoconvert->current_subelement) ++ element = gst_object_ref (autoconvert->current_subelement); ++ initial_identity = autoconvert->initial_identity; ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ ++ if (G_UNLIKELY (!query_only && element == NULL && initial_identity)) { ++ /* No current sub-element - create an identity and install it */ ++ GstElementFactory *identity_feature; ++ GstElement *identity; ++ ++ GST_INFO_OBJECT (autoconvert, ++ "No existing child element - instantiating identity"); ++ /* if the identity feature doesn't exist - something is very wrong */ ++ identity_feature = ++ GST_ELEMENT_FACTORY_CAST (gst_default_registry_find_feature ("identity", ++ GST_TYPE_ELEMENT_FACTORY)); ++ identity = ++ gst_auto_convert_get_or_make_element_from_factory (autoconvert, ++ identity_feature); ++ if (identity ++ && gst_auto_convert_activate_element (autoconvert, identity, NULL)) { ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ if (autoconvert->current_subelement) ++ element = gst_object_ref (autoconvert->current_subelement); ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ } ++ } ++ ++ return element; ++} ++ ++static GstPad * ++gst_auto_convert_get_internal_sinkpad (GstAutoConvert * autoconvert) ++{ ++ GstPad *pad = NULL; ++ ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ if (autoconvert->current_internal_sinkpad) ++ pad = gst_object_ref (autoconvert->current_internal_sinkpad); ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ ++ return pad; ++} ++ ++static GstPad * ++gst_auto_convert_get_internal_srcpad (GstAutoConvert * autoconvert) ++{ ++ GstPad *pad = NULL; ++ ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ if (autoconvert->current_internal_srcpad) ++ pad = gst_object_ref (autoconvert->current_internal_srcpad); ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ ++ return pad; ++} ++ ++/* ++ * This function creates and adds an element to the GstAutoConvert ++ * it then creates the internal pads and links them ++ * ++ */ ++ ++static GstElement * ++gst_auto_convert_add_element (GstAutoConvert * autoconvert, ++ GstElementFactory * factory) ++{ ++ GstElement *element = NULL; ++ GstPad *internal_sinkpad = NULL; ++ GstPad *internal_srcpad = NULL; ++ GstPad *sinkpad; ++ GstPad *srcpad; ++ GstPadLinkReturn padlinkret; ++ ++ GST_DEBUG_OBJECT (autoconvert, "Adding element %s to the autoconvert bin", ++ gst_plugin_feature_get_name (GST_PLUGIN_FEATURE (factory))); ++ ++ element = gst_element_factory_create (factory, NULL); ++ if (!element) ++ return NULL; ++ ++ if (!gst_bin_add (GST_BIN (autoconvert), element)) { ++ GST_ERROR_OBJECT (autoconvert, "Could not add element %s to the bin", ++ GST_OBJECT_NAME (element)); ++ gst_object_unref (element); ++ return NULL; ++ } ++ ++ srcpad = get_pad_by_direction (element, GST_PAD_SRC); ++ if (!srcpad) { ++ GST_ERROR_OBJECT (autoconvert, "Could not find source in %s", ++ GST_OBJECT_NAME (element)); ++ goto error; ++ } ++ ++ sinkpad = get_pad_by_direction (element, GST_PAD_SINK); ++ if (!sinkpad) { ++ GST_ERROR_OBJECT (autoconvert, "Could not find sink in %s", ++ GST_OBJECT_NAME (element)); ++ goto error; ++ } ++ ++ internal_sinkpad = ++ gst_pad_new_from_static_template (&sink_internal_template, ++ "sink_internal"); ++ internal_srcpad = ++ gst_pad_new_from_static_template (&src_internal_template, "src_internal"); ++ ++ if (!internal_sinkpad || !internal_srcpad) { ++ GST_ERROR_OBJECT (autoconvert, "Could not create internal pads"); ++ goto error; ++ } ++ ++ g_object_weak_ref (G_OBJECT (element), (GWeakNotify) gst_object_unref, ++ internal_sinkpad); ++ g_object_weak_ref (G_OBJECT (element), (GWeakNotify) gst_object_unref, ++ internal_srcpad); ++ ++ gst_pad_set_active (internal_sinkpad, TRUE); ++ gst_pad_set_active (internal_srcpad, TRUE); ++ ++ g_object_set_qdata (G_OBJECT (internal_srcpad), parent_quark, autoconvert); ++ g_object_set_qdata (G_OBJECT (internal_sinkpad), parent_quark, autoconvert); ++ ++ gst_pad_set_chain_function (internal_sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_chain)); ++ gst_pad_set_event_function (internal_sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_event)); ++ gst_pad_set_query_function (internal_sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_query)); ++ gst_pad_set_query_type_function (internal_sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_query_type)); ++ gst_pad_set_getcaps_function (internal_sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_getcaps)); ++ gst_pad_set_bufferalloc_function (internal_sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_buffer_alloc)); ++ gst_pad_set_fixatecaps_function (internal_sinkpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_fixatecaps)); ++ ++ gst_pad_set_event_function (internal_srcpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_internal_src_event)); ++ gst_pad_set_query_function (internal_srcpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_internal_src_query)); ++ gst_pad_set_query_type_function (internal_srcpad, ++ GST_DEBUG_FUNCPTR (gst_auto_convert_internal_src_query_type)); ++ ++ padlinkret = gst_pad_link (internal_srcpad, sinkpad); ++ if (GST_PAD_LINK_FAILED (padlinkret)) { ++ GST_WARNING_OBJECT (autoconvert, "Could not links pad %s:%s to %s:%s" ++ " for reason %d", ++ GST_DEBUG_PAD_NAME (internal_srcpad), ++ GST_DEBUG_PAD_NAME (sinkpad), padlinkret); ++ goto error; ++ } ++ ++ padlinkret = gst_pad_link (srcpad, internal_sinkpad); ++ if (GST_PAD_LINK_FAILED (padlinkret)) { ++ GST_WARNING_OBJECT (autoconvert, "Could not links pad %s:%s to %s:%s" ++ " for reason %d", ++ GST_DEBUG_PAD_NAME (internal_srcpad), ++ GST_DEBUG_PAD_NAME (sinkpad), padlinkret); ++ goto error; ++ } ++ ++ g_object_set_qdata (G_OBJECT (element), ++ internal_srcpad_quark, internal_srcpad); ++ g_object_set_qdata (G_OBJECT (element), ++ internal_sinkpad_quark, internal_sinkpad); ++ ++ /* Iffy */ ++ gst_element_sync_state_with_parent (element); ++ ++ /* Increment the reference count we will return to the caller */ ++ gst_object_ref (element); ++ ++ return element; ++ ++error: ++ gst_bin_remove (GST_BIN (autoconvert), element); ++ ++ return NULL; ++} ++ ++static GstElement * ++gst_auto_convert_get_or_make_element_from_factory (GstAutoConvert * autoconvert, ++ GstElementFactory * factory) ++{ ++ GstElement *element = NULL; ++ GstElementFactory *loaded_factory = ++ GST_ELEMENT_FACTORY (gst_plugin_feature_load (GST_PLUGIN_FEATURE ++ (factory))); ++ ++ if (!loaded_factory) ++ return NULL; ++ ++ element = gst_auto_convert_get_element_by_type (autoconvert, ++ gst_element_factory_get_element_type (loaded_factory)); ++ ++ if (!element) { ++ element = gst_auto_convert_add_element (autoconvert, loaded_factory); ++ } ++ ++ gst_object_unref (loaded_factory); ++ ++ return element; ++} ++ ++/* ++ * This function checks if there is one and only one pad template on the ++ * factory that can accept the given caps. If there is one and only one, ++ * it returns TRUE, otherwise, its FALSE ++ */ ++ ++static gboolean ++factory_can_intersect (GstAutoConvert * autoconvert, ++ GstElementFactory * factory, GstPadDirection direction, GstCaps * caps) ++{ ++ GList *templates; ++ gint has_direction = FALSE; ++ gboolean ret = FALSE; ++ ++ g_return_val_if_fail (factory != NULL, FALSE); ++ g_return_val_if_fail (caps != NULL, FALSE); ++ ++ templates = factory->staticpadtemplates; ++ ++ while (templates) { ++ GstStaticPadTemplate *template = (GstStaticPadTemplate *) templates->data; ++ ++ if (template->direction == direction) { ++ GstCaps *intersect = NULL; ++ GstCaps *tmpl_caps = NULL; ++ ++ /* If there is more than one pad in this direction, we return FALSE ++ * Only transform elements (with one sink and one source pad) ++ * are accepted ++ */ ++ if (has_direction) { ++ GST_DEBUG_OBJECT (autoconvert, "Factory %" GST_PTR_FORMAT ++ " has more than one static template with dir %d", ++ template, direction); ++ return FALSE; ++ } ++ has_direction = TRUE; ++ ++ tmpl_caps = gst_static_caps_get (&template->static_caps); ++ intersect = gst_caps_intersect (tmpl_caps, caps); ++ GST_DEBUG_OBJECT (autoconvert, "Intersection of factory %" GST_PTR_FORMAT ++ " static caps %" GST_PTR_FORMAT " and caps %" GST_PTR_FORMAT ++ " is %" GST_PTR_FORMAT, factory, tmpl_caps, caps, intersect); ++ gst_caps_unref (tmpl_caps); ++ ++ if (intersect) { ++ if (!gst_caps_is_empty (intersect)) ++ ret = TRUE; ++ ++ gst_caps_unref (intersect); ++ } ++ } ++ templates = g_list_next (templates); ++ } ++ ++ return ret; ++} ++ ++static gboolean ++gst_auto_convert_activate_element (GstAutoConvert * autoconvert, ++ GstElement * element, GstCaps * caps) ++{ ++ GstPad *internal_srcpad = g_object_get_qdata (G_OBJECT (element), ++ internal_srcpad_quark); ++ GstPad *internal_sinkpad = g_object_get_qdata (G_OBJECT (element), ++ internal_sinkpad_quark); ++ ++ if (caps) { ++ /* check if the element can really accept said caps */ ++ if (!gst_pad_peer_accept_caps (internal_srcpad, caps)) { ++ GST_DEBUG_OBJECT (autoconvert, "Could not set %s:%s to %" ++ GST_PTR_FORMAT, GST_DEBUG_PAD_NAME (internal_srcpad), caps); ++ return FALSE; ++ } ++ } ++ ++ gst_pad_set_fixatecaps_function (autoconvert->sinkpad, ++ gst_auto_convert_sink_fixatecaps); ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ autoconvert->current_subelement = element; ++ autoconvert->current_internal_srcpad = internal_srcpad; ++ autoconvert->current_internal_sinkpad = internal_sinkpad; ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ ++ GST_INFO_OBJECT (autoconvert, ++ "Selected element %s", ++ GST_OBJECT_NAME (GST_OBJECT (autoconvert->current_subelement))); ++ ++ /* Send new-segment event if we have one */ ++ if (autoconvert->sink_segment.format != GST_FORMAT_UNDEFINED) { ++ GstEvent *event; ++ GstSegment *seg = &autoconvert->sink_segment; ++ event = gst_event_new_new_segment_full (TRUE, ++ seg->rate, seg->applied_rate, seg->format, seg->start, ++ seg->stop, seg->time); ++ ++ autoconvert->drop_newseg = TRUE; ++ gst_pad_push_event (internal_srcpad, event); ++ autoconvert->drop_newseg = FALSE; ++ } ++ ++ return TRUE; ++} ++ ++/* ++ * If there is already an internal element, it will try to call set_caps on it ++ * ++ * If there isn't an internal element or if the set_caps() on the internal ++ * element failed, it will try to find another element where it would succeed ++ * and will change the internal element. ++ */ ++ ++static gboolean ++gst_auto_convert_sink_setcaps (GstPad * pad, GstCaps * caps) ++{ ++ GList *elem; ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (gst_pad_get_parent (pad)); ++ GstElement *subelement; ++ GstCaps *other_caps = NULL; ++ GstPad *peer; ++ GList *factories; ++ ++ g_return_val_if_fail (autoconvert != NULL, FALSE); ++ ++ subelement = gst_auto_convert_get_subelement (autoconvert, TRUE); ++ if (subelement) { ++ if (gst_pad_peer_accept_caps (autoconvert->current_internal_srcpad, caps)) { ++ /* If we can set the new caps on the current element, ++ * then we just get out ++ */ ++ GST_DEBUG_OBJECT (autoconvert, "Could set %s:%s to %" GST_PTR_FORMAT, ++ GST_DEBUG_PAD_NAME (autoconvert->current_internal_srcpad), caps); ++ gst_object_unref (subelement); ++ goto get_out; ++ } else { ++ /* If the current element doesn't work, ++ * then we remove the current element before finding a new one. ++ * By unsetting the fixatecaps function, we go back to the default one ++ */ ++ gst_pad_set_fixatecaps_function (autoconvert->sinkpad, NULL); ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ if (autoconvert->current_subelement == subelement) { ++ gst_object_unref (autoconvert->current_subelement); ++ autoconvert->current_subelement = NULL; ++ autoconvert->current_internal_srcpad = NULL; ++ autoconvert->current_internal_sinkpad = NULL; ++ } ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ gst_object_unref (subelement); ++ } ++ } ++ ++ peer = gst_pad_get_peer (autoconvert->srcpad); ++ if (peer) { ++ other_caps = gst_pad_get_caps (peer); ++ gst_object_unref (peer); ++ } ++ ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ factories = autoconvert->factories; ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ ++ if (!factories) ++ factories = gst_auto_convert_load_factories (autoconvert); ++ ++ for (elem = factories; elem; elem = g_list_next (elem)) { ++ GstElementFactory *factory = GST_ELEMENT_FACTORY (elem->data); ++ GstElement *element; ++ ++ /* Lets first check if according to the static pad templates on the factory ++ * these caps have any chance of success ++ */ ++ if (!factory_can_intersect (autoconvert, factory, GST_PAD_SINK, caps)) { ++ GST_LOG_OBJECT (autoconvert, "Factory %s does not accept sink caps %" ++ GST_PTR_FORMAT, ++ gst_plugin_feature_get_name (GST_PLUGIN_FEATURE (factory)), caps); ++ continue; ++ } ++ if (other_caps != NULL) { ++ if (!factory_can_intersect (autoconvert, factory, GST_PAD_SRC, ++ other_caps)) { ++ GST_LOG_OBJECT (autoconvert, ++ "Factory %s does not accept src caps %" GST_PTR_FORMAT, ++ gst_plugin_feature_get_name (GST_PLUGIN_FEATURE (factory)), ++ other_caps); ++ continue; ++ } ++ } ++ ++ /* The element had a chance of success, lets make it */ ++ element = ++ gst_auto_convert_get_or_make_element_from_factory (autoconvert, ++ factory); ++ if (!element) ++ continue; ++ ++ /* And make it the current child */ ++ if (gst_auto_convert_activate_element (autoconvert, element, caps)) ++ break; ++ } ++ ++get_out: ++ if (other_caps) ++ gst_caps_unref (other_caps); ++ gst_object_unref (autoconvert); ++ ++ if (autoconvert->current_subelement) { ++ return TRUE; ++ } else { ++ GST_WARNING_OBJECT (autoconvert, ++ "Could not find a matching element for caps"); ++ return FALSE; ++ } ++} ++ ++/* ++ * This function filters the pad pad templates, taking only transform element ++ * (with one sink and one src pad) ++ */ ++ ++static gboolean ++gst_auto_convert_default_filter_func (GstPluginFeature * feature, ++ gpointer user_data) ++{ ++ GstElementFactory *factory = NULL; ++ const GList *static_pad_templates, *tmp; ++ GstStaticPadTemplate *src = NULL, *sink = NULL; ++ ++ if (!GST_IS_ELEMENT_FACTORY (feature)) ++ return FALSE; ++ ++ factory = GST_ELEMENT_FACTORY (feature); ++ ++ static_pad_templates = gst_element_factory_get_static_pad_templates (factory); ++ ++ for (tmp = static_pad_templates; tmp; tmp = g_list_next (tmp)) { ++ GstStaticPadTemplate *template = tmp->data; ++ GstCaps *caps; ++ ++ if (template->presence == GST_PAD_SOMETIMES) ++ return FALSE; ++ ++ if (template->presence != GST_PAD_ALWAYS) ++ continue; ++ ++ switch (template->direction) { ++ case GST_PAD_SRC: ++ if (src) ++ return FALSE; ++ src = template; ++ break; ++ case GST_PAD_SINK: ++ if (sink) ++ return FALSE; ++ sink = template; ++ break; ++ default: ++ return FALSE; ++ } ++ ++ caps = gst_static_pad_template_get_caps (template); ++ ++ if (gst_caps_is_any (caps) || gst_caps_is_empty (caps)) ++ return FALSE; ++ } ++ ++ if (!src || !sink) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++/* function used to sort element features ++ * Copy-pasted from decodebin */ ++static gint ++compare_ranks (GstPluginFeature * f1, GstPluginFeature * f2) ++{ ++ gint diff; ++ const gchar *rname1, *rname2; ++ ++ diff = gst_plugin_feature_get_rank (f2) - gst_plugin_feature_get_rank (f1); ++ if (diff != 0) ++ return diff; ++ ++ rname1 = gst_plugin_feature_get_name (f1); ++ rname2 = gst_plugin_feature_get_name (f2); ++ ++ diff = strcmp (rname2, rname1); ++ ++ return diff; ++} ++ ++static GList * ++gst_auto_convert_load_factories (GstAutoConvert * autoconvert) ++{ ++ GList *all_factories; ++ GList *out_factories; ++ ++ all_factories = ++ gst_default_registry_feature_filter (gst_auto_convert_default_filter_func, ++ FALSE, NULL); ++ ++ all_factories = g_list_sort (all_factories, (GCompareFunc) compare_ranks); ++ ++ g_assert (all_factories); ++ ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ if (autoconvert->factories == NULL) { ++ autoconvert->factories = all_factories; ++ all_factories = NULL; ++ } ++ out_factories = autoconvert->factories; ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ ++ if (all_factories) { ++ /* In this case, someone set the property while we were looking! */ ++ gst_plugin_feature_list_free (all_factories); ++ } ++ ++ return out_factories; ++} ++ ++/* In this case, we should almost always have an internal element, because ++ * set_caps() should have been called first ++ */ ++ ++static GstFlowReturn ++gst_auto_convert_sink_chain (GstPad * pad, GstBuffer * buffer) ++{ ++ GstFlowReturn ret = GST_FLOW_NOT_NEGOTIATED; ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (gst_pad_get_parent (pad)); ++ GstPad *internal_srcpad; ++ ++ internal_srcpad = gst_auto_convert_get_internal_srcpad (autoconvert); ++ if (internal_srcpad) { ++ GList *events = NULL; ++ GList *l; ++ ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ if (autoconvert->cached_events) { ++ events = g_list_reverse (autoconvert->cached_events); ++ autoconvert->cached_events = NULL; ++ } ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ ++ if (events) { ++ GST_DEBUG_OBJECT (autoconvert, "Sending cached events downstream"); ++ for (l = events; l; l = l->next) ++ gst_pad_push_event (internal_srcpad, l->data); ++ g_list_free (events); ++ } ++ ++ ret = gst_pad_push (internal_srcpad, buffer); ++ gst_object_unref (internal_srcpad); ++ if (GST_FLOW_IS_FATAL (ret)) { ++ GstElement *child = gst_auto_convert_get_subelement (autoconvert, TRUE); ++ GST_DEBUG_OBJECT (autoconvert, ++ "Child element %" GST_PTR_FORMAT "returned flow %s", child, ++ gst_flow_get_name (ret)); ++ if (child) ++ gst_object_unref (child); ++ } ++ } else { ++ GST_ERROR_OBJECT (autoconvert, "Got buffer without an negotiated element," ++ " returning not-negotiated"); ++ } ++ ++ gst_object_unref (autoconvert); ++ ++ return ret; ++} ++ ++static gboolean ++gst_auto_convert_sink_event (GstPad * pad, GstEvent * event) ++{ ++ gboolean ret = TRUE; ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (gst_pad_get_parent (pad)); ++ GstPad *internal_srcpad; ++ ++ if (GST_EVENT_TYPE (event) == GST_EVENT_NEWSEGMENT) { ++ GstFormat format; ++ gdouble rate, arate; ++ gint64 start, stop, time; ++ gboolean update; ++ ++ gst_event_parse_new_segment_full (event, &update, &rate, &arate, &format, ++ &start, &stop, &time); ++ ++ GST_DEBUG_OBJECT (autoconvert, ++ "newsegment: update %d, rate %g, arate %g, start %" GST_TIME_FORMAT ++ ", stop %" GST_TIME_FORMAT ", time %" GST_TIME_FORMAT, ++ update, rate, arate, GST_TIME_ARGS (start), GST_TIME_ARGS (stop), ++ GST_TIME_ARGS (time)); ++ ++ /* Store the values for feeding to sub-elements */ ++ gst_segment_set_newsegment_full (&autoconvert->sink_segment, update, ++ rate, arate, format, start, stop, time); ++ } ++ ++ internal_srcpad = gst_auto_convert_get_internal_srcpad (autoconvert); ++ if (internal_srcpad == NULL) { ++ /* Query the subelement - triggers creation of an identity if necessary */ ++ GstElement *subelement = ++ gst_auto_convert_get_subelement (autoconvert, FALSE); ++ if (subelement) ++ gst_object_unref (subelement); ++ internal_srcpad = gst_auto_convert_get_internal_srcpad (autoconvert); ++ } ++ ++ if (internal_srcpad) { ++ ret = gst_pad_push_event (internal_srcpad, event); ++ gst_object_unref (internal_srcpad); ++ } else { ++ switch (GST_EVENT_TYPE (event)) { ++ case GST_EVENT_FLUSH_STOP: ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ g_list_foreach (autoconvert->cached_events, ++ (GFunc) gst_mini_object_unref, NULL); ++ g_list_free (autoconvert->cached_events); ++ autoconvert->cached_events = NULL; ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ /* fall through */ ++ case GST_EVENT_FLUSH_START: ++ ret = gst_pad_push_event (autoconvert->srcpad, event); ++ break; ++ default: ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ autoconvert->cached_events = ++ g_list_prepend (autoconvert->cached_events, event); ++ ret = TRUE; ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ break; ++ } ++ } ++ ++ gst_object_unref (autoconvert); ++ ++ return ret; ++} ++ ++/* TODO Properly test that this code works well for queries */ ++static gboolean ++gst_auto_convert_sink_query (GstPad * pad, GstQuery * query) ++{ ++ gboolean ret = TRUE; ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (gst_pad_get_parent (pad)); ++ GstElement *subelement; ++ ++ subelement = gst_auto_convert_get_subelement (autoconvert, TRUE); ++ if (subelement) { ++ GstPad *sub_sinkpad = get_pad_by_direction (subelement, GST_PAD_SINK); ++ ++ ret = gst_pad_query (sub_sinkpad, query); ++ ++ gst_object_unref (sub_sinkpad); ++ gst_object_unref (subelement); ++ } else { ++ GST_WARNING_OBJECT (autoconvert, "Got query while no element was selected," ++ "letting through"); ++ ret = gst_pad_peer_query (autoconvert->srcpad, query); ++ } ++ ++ gst_object_unref (autoconvert); ++ ++ return ret; ++} ++ ++/* TODO Test that this code works properly for queries */ ++static const GstQueryType * ++gst_auto_convert_sink_query_type (GstPad * pad) ++{ ++ const GstQueryType *ret = NULL; ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (gst_pad_get_parent (pad)); ++ GstElement *subelement; ++ ++ subelement = gst_auto_convert_get_subelement (autoconvert, TRUE); ++ if (subelement) { ++ GstPad *sub_sinkpad = get_pad_by_direction (subelement, GST_PAD_SINK); ++ ++ ret = gst_pad_get_query_types (sub_sinkpad); ++ ++ gst_object_unref (sub_sinkpad); ++ gst_object_unref (subelement); ++ } else { ++ ret = gst_pad_get_query_types_default (pad); ++ } ++ ++ gst_object_unref (autoconvert); ++ ++ return ret; ++} ++ ++static void ++gst_auto_convert_sink_fixatecaps (GstPad * pad, GstCaps * caps) ++{ ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (gst_pad_get_parent (pad)); ++ GstElement *subelement; ++ ++ subelement = gst_auto_convert_get_subelement (autoconvert, TRUE); ++ if (subelement) { ++ GstPad *sinkpad = get_pad_by_direction (subelement, GST_PAD_SINK); ++ gst_pad_fixate_caps (sinkpad, caps); ++ gst_object_unref (sinkpad); ++ gst_object_unref (subelement); ++ } ++} ++ ++/** ++ * gst_auto_convert_sink_getcaps: ++ * @pad: the sink #GstPad ++ * ++ * This function returns the union of the caps of all the possible element ++ * factories, based on the static pad templates. ++ * It also checks does a getcaps on the downstream element and ignores all ++ * factories whose static caps can not satisfy it. ++ * ++ * It does not try to use each elements getcaps() function ++ */ ++ ++static GstCaps * ++gst_auto_convert_sink_getcaps (GstPad * pad) ++{ ++ GstCaps *caps = NULL, *other_caps = NULL; ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (gst_pad_get_parent (pad)); ++ GstPad *peer; ++ GList *elem, *factories; ++ ++ caps = gst_caps_new_empty (); ++ ++ peer = gst_pad_get_peer (autoconvert->srcpad); ++ if (peer) { ++ other_caps = gst_pad_get_caps (peer); ++ gst_object_unref (peer); ++ } ++ ++ GST_DEBUG_OBJECT (autoconvert, ++ "Lets find all the element that can fit here with src caps %" ++ GST_PTR_FORMAT, other_caps); ++ ++ if (other_caps && gst_caps_is_empty (other_caps)) { ++ goto out; ++ } ++ ++ GST_AUTOCONVERT_LOCK (autoconvert); ++ factories = autoconvert->factories; ++ GST_AUTOCONVERT_UNLOCK (autoconvert); ++ ++ if (!factories) ++ factories = gst_auto_convert_load_factories (autoconvert); ++ ++ for (elem = factories; elem; elem = g_list_next (elem)) { ++ GstElementFactory *factory = GST_ELEMENT_FACTORY (elem->data); ++ GstElement *element = NULL; ++ GstCaps *element_caps; ++ GstPad *internal_srcpad = NULL; ++ ++ if (other_caps != NULL) { ++ if (!factory_can_intersect (autoconvert, factory, GST_PAD_SRC, ++ other_caps)) { ++ GST_LOG_OBJECT (autoconvert, ++ "Factory %s does not accept src caps %" GST_PTR_FORMAT, ++ gst_plugin_feature_get_name (GST_PLUGIN_FEATURE (factory)), ++ other_caps); ++ continue; ++ } ++ } ++ ++ if (other_caps) { ++ ++ element = ++ gst_auto_convert_get_or_make_element_from_factory (autoconvert, ++ factory); ++ if (!element) ++ continue; ++ ++ internal_srcpad = g_object_get_qdata (G_OBJECT (element), ++ internal_srcpad_quark); ++ ++ element_caps = gst_pad_peer_get_caps (internal_srcpad); ++ ++ if (element_caps) { ++ if (!gst_caps_is_any (element_caps) && ++ !gst_caps_is_empty (element_caps)) { ++ GstCaps *tmpcaps = NULL; ++ ++ tmpcaps = gst_caps_union (caps, element_caps); ++ gst_caps_unref (caps); ++ caps = tmpcaps; ++ ++ } ++ gst_caps_unref (element_caps); ++ } ++ ++ gst_object_unref (element); ++ } else { ++ const GList *tmp; ++ ++ for (tmp = gst_element_factory_get_static_pad_templates (factory); ++ tmp; tmp = g_list_next (tmp)) { ++ GstStaticPadTemplate *template = tmp->data; ++ GstCaps *static_caps = gst_static_pad_template_get_caps (template); ++ ++ if (static_caps && !gst_caps_is_any (static_caps) && ++ !gst_caps_is_empty (static_caps)) { ++ GstCaps *tmpcaps = NULL; ++ ++ tmpcaps = gst_caps_union (caps, static_caps); ++ gst_caps_unref (caps); ++ caps = tmpcaps; ++ } ++ } ++ } ++ } ++ ++ GST_DEBUG_OBJECT (autoconvert, "Returning unioned caps %" GST_PTR_FORMAT, ++ caps); ++ ++out: ++ gst_object_unref (autoconvert); ++ ++ if (other_caps) ++ gst_caps_unref (other_caps); ++ ++ return caps; ++} ++ ++ ++static GstFlowReturn ++gst_auto_convert_sink_buffer_alloc (GstPad * pad, guint64 offset, ++ guint size, GstCaps * caps, GstBuffer ** buf) ++{ ++ GstFlowReturn ret = GST_FLOW_OK; ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (gst_pad_get_parent (pad)); ++ GstPad *internal_srcpad; ++ ++ g_return_val_if_fail (autoconvert != NULL, GST_FLOW_ERROR); ++ ++ internal_srcpad = gst_auto_convert_get_internal_srcpad (autoconvert); ++ if (internal_srcpad) { ++ ret = gst_pad_alloc_buffer (internal_srcpad, offset, size, caps, buf); ++ gst_object_unref (internal_srcpad); ++ } else ++ /* Fallback to the default */ ++ *buf = NULL; ++ ++ gst_object_unref (autoconvert); ++ ++ return ret; ++} ++ ++static gboolean ++gst_auto_convert_src_event (GstPad * pad, GstEvent * event) ++{ ++ gboolean ret = TRUE; ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (gst_pad_get_parent (pad)); ++ GstPad *internal_sinkpad; ++ ++ internal_sinkpad = gst_auto_convert_get_internal_sinkpad (autoconvert); ++ if (internal_sinkpad) { ++ ret = gst_pad_push_event (internal_sinkpad, event); ++ gst_object_unref (internal_sinkpad); ++ } else { ++ GST_WARNING_OBJECT (autoconvert, ++ "Got upstream event while no element was selected," "forwarding."); ++ ret = gst_pad_push_event (autoconvert->sinkpad, event); ++ } ++ ++ gst_object_unref (autoconvert); ++ ++ return ret; ++} ++ ++/* TODO Properly test that this code works well for queries */ ++static gboolean ++gst_auto_convert_src_query (GstPad * pad, GstQuery * query) ++{ ++ gboolean ret = TRUE; ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (gst_pad_get_parent (pad)); ++ GstElement *subelement; ++ ++ subelement = gst_auto_convert_get_subelement (autoconvert, TRUE); ++ if (subelement) { ++ GstPad *sub_srcpad = get_pad_by_direction (subelement, GST_PAD_SRC); ++ ++ ret = gst_pad_query (sub_srcpad, query); ++ ++ gst_object_unref (sub_srcpad); ++ gst_object_unref (subelement); ++ } else { ++ GST_WARNING_OBJECT (autoconvert, ++ "Got upstream query while no element was selected," "forwarding."); ++ ret = gst_pad_peer_query (autoconvert->sinkpad, query); ++ } ++ ++ gst_object_unref (autoconvert); ++ ++ return ret; ++} ++ ++/* TODO Properly test that this code works well for queries */ ++static const GstQueryType * ++gst_auto_convert_src_query_type (GstPad * pad) ++{ ++ const GstQueryType *ret = NULL; ++ GstAutoConvert *autoconvert = GST_AUTO_CONVERT (gst_pad_get_parent (pad)); ++ GstElement *subelement; ++ ++ subelement = gst_auto_convert_get_subelement (autoconvert, TRUE); ++ if (subelement) { ++ GstPad *sub_srcpad = get_pad_by_direction (subelement, GST_PAD_SRC); ++ ++ ret = gst_pad_get_query_types (sub_srcpad); ++ ++ gst_object_unref (sub_srcpad); ++ gst_object_unref (subelement); ++ } else { ++ ret = gst_pad_get_query_types_default (pad); ++ } ++ ++ gst_object_unref (autoconvert); ++ ++ return ret; ++} ++ ++static GstFlowReturn ++gst_auto_convert_internal_sink_chain (GstPad * pad, GstBuffer * buffer) ++{ ++ GstAutoConvert *autoconvert = ++ GST_AUTO_CONVERT (g_object_get_qdata (G_OBJECT (pad), ++ parent_quark)); ++ ++ return gst_pad_push (autoconvert->srcpad, buffer); ++} ++ ++static gboolean ++gst_auto_convert_internal_sink_event (GstPad * pad, GstEvent * event) ++{ ++ GstAutoConvert *autoconvert = ++ GST_AUTO_CONVERT (g_object_get_qdata (G_OBJECT (pad), ++ parent_quark)); ++ ++ if (GST_EVENT_TYPE (event) == GST_EVENT_NEWSEGMENT) { ++ if (autoconvert->drop_newseg) { ++ GST_DEBUG_OBJECT (autoconvert, "Dropping primer newsegment event"); ++ gst_event_unref (event); ++ return TRUE; ++ } ++ } ++ ++ return gst_pad_push_event (autoconvert->srcpad, event); ++} ++ ++static gboolean ++gst_auto_convert_internal_sink_query (GstPad * pad, GstQuery * query) ++{ ++ GstAutoConvert *autoconvert = ++ GST_AUTO_CONVERT (g_object_get_qdata (G_OBJECT (pad), ++ parent_quark)); ++ GstPad *peerpad = gst_pad_get_peer (autoconvert->srcpad); ++ gboolean ret = FALSE; ++ ++ if (peerpad) { ++ ret = gst_pad_query (peerpad, query); ++ gst_object_unref (peerpad); ++ } ++ ++ return ret; ++} ++ ++static const GstQueryType * ++gst_auto_convert_internal_sink_query_type (GstPad * pad) ++{ ++ GstAutoConvert *autoconvert = ++ GST_AUTO_CONVERT (g_object_get_qdata (G_OBJECT (pad), ++ parent_quark)); ++ GstPad *peerpad = gst_pad_get_peer (autoconvert->srcpad); ++ const GstQueryType *ret = NULL; ++ ++ if (peerpad) { ++ ret = gst_pad_get_query_types (peerpad); ++ gst_object_unref (peerpad); ++ } else ++ ret = gst_pad_get_query_types_default (pad); ++ ++ return ret; ++} ++ ++static GstCaps * ++gst_auto_convert_internal_sink_getcaps (GstPad * pad) ++{ ++ GstAutoConvert *autoconvert = ++ GST_AUTO_CONVERT (g_object_get_qdata (G_OBJECT (pad), ++ parent_quark)); ++ ++ return gst_pad_peer_get_caps (autoconvert->srcpad); ++} ++ ++static void ++gst_auto_convert_internal_sink_fixatecaps (GstPad * pad, GstCaps * caps) ++{ ++ GstAutoConvert *autoconvert = ++ GST_AUTO_CONVERT (g_object_get_qdata (G_OBJECT (pad), ++ parent_quark)); ++ GstPad *peerpad = gst_pad_get_peer (autoconvert->sinkpad); ++ ++ if (peerpad) { ++ gst_pad_fixate_caps (peerpad, caps); ++ gst_object_unref (peerpad); ++ } ++} ++ ++static GstFlowReturn ++gst_auto_convert_internal_sink_buffer_alloc (GstPad * pad, guint64 offset, ++ guint size, GstCaps * caps, GstBuffer ** buf) ++{ ++ GstAutoConvert *autoconvert = ++ GST_AUTO_CONVERT (g_object_get_qdata (G_OBJECT (pad), ++ parent_quark)); ++ ++ return gst_pad_alloc_buffer (autoconvert->srcpad, offset, size, caps, buf); ++} ++ ++static gboolean ++gst_auto_convert_internal_src_event (GstPad * pad, GstEvent * event) ++{ ++ GstAutoConvert *autoconvert = ++ GST_AUTO_CONVERT (g_object_get_qdata (G_OBJECT (pad), ++ parent_quark)); ++ ++ return gst_pad_push_event (autoconvert->sinkpad, event); ++} ++ ++static gboolean ++gst_auto_convert_internal_src_query (GstPad * pad, GstQuery * query) ++{ ++ GstAutoConvert *autoconvert = ++ GST_AUTO_CONVERT (g_object_get_qdata (G_OBJECT (pad), ++ parent_quark)); ++ GstPad *peerpad = gst_pad_get_peer (autoconvert->sinkpad); ++ gboolean ret = FALSE; ++ ++ if (peerpad) { ++ ret = gst_pad_query (peerpad, query); ++ gst_object_unref (peerpad); ++ } ++ ++ return ret; ++} ++ ++static const GstQueryType * ++gst_auto_convert_internal_src_query_type (GstPad * pad) ++{ ++ GstAutoConvert *autoconvert = ++ GST_AUTO_CONVERT (g_object_get_qdata (G_OBJECT (pad), ++ parent_quark)); ++ GstPad *peerpad = gst_pad_get_peer (autoconvert->sinkpad); ++ const GstQueryType *ret = NULL; ++ ++ if (peerpad) { ++ ret = gst_pad_get_query_types (peerpad); ++ gst_object_unref (peerpad); ++ } else { ++ ret = gst_pad_get_query_types_default (pad); ++ } ++ ++ return ret; ++} ++ ++gboolean ++gst_auto_convert_plugin_init (GstPlugin * plugin) ++{ ++ return gst_element_register (plugin, "autoconvert", ++ GST_RANK_NONE, GST_TYPE_AUTO_CONVERT); ++} ++ ++GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, ++ GST_VERSION_MINOR, ++ "autoconvert", ++ "Selects convertor element based on caps", ++ gst_auto_convert_plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, ++ GST_PACKAGE_ORIGIN) +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/autoconvert/gstautoconvert.h gst-plugins-good0.10-0.10.23/farsight/autoconvert/gstautoconvert.h +--- gst-plugins-good0.10-0.10.23.ori/farsight/autoconvert/gstautoconvert.h 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/autoconvert/gstautoconvert.h 2009-11-01 20:21:59.000000000 -0500 +@@ -0,0 +1,69 @@ ++/* GStreamer ++ * ++ * Copyright 2007 Collabora Ltd ++ * @author: Olivier Crete ++ * Copyright 2007-2008 Nokia ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++ ++#ifndef __GST_AUTO_CONVERT_H__ ++#define __GST_AUTO_CONVERT_H__ ++ ++#include ++#include ++ ++G_BEGIN_DECLS ++#define GST_TYPE_AUTO_CONVERT (gst_auto_convert_get_type()) ++#define GST_AUTO_CONVERT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_AUTO_CONVERT,GstAutoConvert)) ++#define GST_AUTO_CONVERT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_AUTO_CONVERT,GstAutoConvertClass)) ++#define GST_IS_AUTO_CONVERT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_AUTO_CONVERT)) ++#define GST_IS_AUTO_CONVERT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_AUTO_CONVERT)) ++typedef struct _GstAutoConvert GstAutoConvert; ++typedef struct _GstAutoConvertClass GstAutoConvertClass; ++ ++struct _GstAutoConvert ++{ ++ /*< private >*/ ++ GstBin bin; /* we extend GstBin */ ++ ++ /* Protected by the object lock too */ ++ GList *factories; ++ ++ GstPad *sinkpad; ++ GstPad *srcpad; ++ ++ /* Have to be set all at once ++ * Protected by the object lock */ ++ GstElement *current_subelement; ++ GstPad *current_internal_srcpad; ++ GstPad *current_internal_sinkpad; ++ ++ GList *cached_events; ++ GstSegment sink_segment; ++ gboolean drop_newseg; ++ ++ gboolean initial_identity; ++}; ++ ++struct _GstAutoConvertClass ++{ ++ GstBinClass parent_class; ++}; ++ ++G_END_DECLS ++#endif /* __GST_AUTO_CONVERT_H__ */ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/autoconvert/Makefile.am gst-plugins-good0.10-0.10.23/farsight/autoconvert/Makefile.am +--- gst-plugins-good0.10-0.10.23.ori/farsight/autoconvert/Makefile.am 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/autoconvert/Makefile.am 2009-11-22 14:12:28.000000000 -0500 +@@ -0,0 +1,9 @@ ++plugin_LTLIBRARIES = libgstautoconvert.la ++ ++libgstautoconvert_la_SOURCES = gstautoconvert.c gstautoconvert.h ++ ++libgstautoconvert_la_CFLAGS = $(GST_CFLAGS) ++libgstautoconvert_la_LIBADD = $(GST_LIBS) ++libgstautoconvert_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) ++libgstautoconvert_la_LIBTOOLFLAGS = --tag=disable-static ++ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/autoconvert/Makefile.in gst-plugins-good0.10-0.10.23/farsight/autoconvert/Makefile.in +--- gst-plugins-good0.10-0.10.23.ori/farsight/autoconvert/Makefile.in 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/autoconvert/Makefile.in 2010-03-05 20:28:34.000000000 -0500 +@@ -0,0 +1,817 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# @configure_input@ ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++@SET_MAKE@ ++ ++VPATH = @srcdir@ ++pkgdatadir = $(datadir)/@PACKAGE@ ++pkgincludedir = $(includedir)/@PACKAGE@ ++pkglibdir = $(libdir)/@PACKAGE@ ++pkglibexecdir = $(libexecdir)/@PACKAGE@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = @build@ ++host_triplet = @host@ ++subdir = gst/autoconvert ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ ++ $(top_srcdir)/common/m4/as-auto-alt.m4 \ ++ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ ++ $(top_srcdir)/common/m4/as-objc.m4 \ ++ $(top_srcdir)/common/m4/as-python.m4 \ ++ $(top_srcdir)/common/m4/as-scrub-include.m4 \ ++ $(top_srcdir)/common/m4/as-version.m4 \ ++ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ ++ $(top_srcdir)/common/m4/gst-arch.m4 \ ++ $(top_srcdir)/common/m4/gst-args.m4 \ ++ $(top_srcdir)/common/m4/gst-check.m4 \ ++ $(top_srcdir)/common/m4/gst-default.m4 \ ++ $(top_srcdir)/common/m4/gst-dowhile.m4 \ ++ $(top_srcdir)/common/m4/gst-error.m4 \ ++ $(top_srcdir)/common/m4/gst-feature.m4 \ ++ $(top_srcdir)/common/m4/gst-gettext.m4 \ ++ $(top_srcdir)/common/m4/gst-glib2.m4 \ ++ $(top_srcdir)/common/m4/gst-platform.m4 \ ++ $(top_srcdir)/common/m4/gst-plugin-docs.m4 \ ++ $(top_srcdir)/common/m4/gst-plugindir.m4 \ ++ $(top_srcdir)/common/m4/gst-x11.m4 \ ++ $(top_srcdir)/common/m4/gst.m4 \ ++ $(top_srcdir)/common/m4/gtk-doc.m4 \ ++ $(top_srcdir)/common/m4/pkg.m4 \ ++ $(top_srcdir)/common/m4/shave.m4 $(top_srcdir)/m4/gettext.m4 \ ++ $(top_srcdir)/m4/gst-alsa.m4 $(top_srcdir)/m4/gst-fionread.m4 \ ++ $(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \ ++ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ ++ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ ++ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ ++ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ ++ $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(install_sh) -d ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; ++am__install_max = 40 ++am__nobase_strip_setup = \ ++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` ++am__nobase_strip = \ ++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" ++am__nobase_list = $(am__nobase_strip_setup); \ ++ for p in $$list; do echo "$$p $$p"; done | \ ++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ ++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ ++ if (++n[$$2] == $(am__install_max)) \ ++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ ++ END { for (dir in files) print dir, files[dir] }' ++am__base_list = \ ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++am__installdirs = "$(DESTDIR)$(plugindir)" ++LTLIBRARIES = $(plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++libgstautoconvert_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_libgstautoconvert_la_OBJECTS = \ ++ libgstautoconvert_la-gstautoconvert.lo ++libgstautoconvert_la_OBJECTS = $(am_libgstautoconvert_la_OBJECTS) ++libgstautoconvert_la_LINK = $(LIBTOOL) --tag=CC \ ++ $(libgstautoconvert_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(libgstautoconvert_la_CFLAGS) $(CFLAGS) \ ++ $(libgstautoconvert_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(libgstautoconvert_la_SOURCES) ++DIST_SOURCES = $(libgstautoconvert_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ ++ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ++ACMENC_CFLAGS = @ACMENC_CFLAGS@ ++ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@ ++ALSA_CFLAGS = @ALSA_CFLAGS@ ++ALSA_LIBS = @ALSA_LIBS@ ++AMRWB_LIBS = @AMRWB_LIBS@ ++AMTAR = @AMTAR@ ++AM_MAKEFLAGS = @AM_MAKEFLAGS@ ++APEXSINK_CFLAGS = @APEXSINK_CFLAGS@ ++APEXSINK_LIBS = @APEXSINK_LIBS@ ++AR = @AR@ ++AS = @AS@ ++ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@ ++ASSRENDER_LIBS = @ASSRENDER_LIBS@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ ++AWK = @AWK@ ++BZ2_LIBS = @BZ2_LIBS@ ++CC = @CC@ ++CCASFLAGS = @CCASFLAGS@ ++CCDEPMODE = @CCDEPMODE@ ++CDAUDIO_CFLAGS = @CDAUDIO_CFLAGS@ ++CDAUDIO_CONFIG = @CDAUDIO_CONFIG@ ++CDAUDIO_LIBS = @CDAUDIO_LIBS@ ++CELT_0_5_CFLAGS = @CELT_0_5_CFLAGS@ ++CELT_0_5_LIBS = @CELT_0_5_LIBS@ ++CELT_0_7_CFLAGS = @CELT_0_7_CFLAGS@ ++CELT_0_7_LIBS = @CELT_0_7_LIBS@ ++CELT_CFLAGS = @CELT_CFLAGS@ ++CELT_LIBS = @CELT_LIBS@ ++CFLAGS = @CFLAGS@ ++COG_CFLAGS = @COG_CFLAGS@ ++COG_LIBS = @COG_LIBS@ ++CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ ++CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DCCP_LIBS = @DCCP_LIBS@ ++DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@ ++DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@ ++DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@ ++DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@ ++DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@ ++DEFS = @DEFS@ ++DEPDIR = @DEPDIR@ ++DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@ ++DIRAC_CFLAGS = @DIRAC_CFLAGS@ ++DIRAC_LIBS = @DIRAC_LIBS@ ++DIRECTDRAW_LIBS = @DIRECTDRAW_LIBS@ ++DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ ++DIRECTFB_LIBS = @DIRECTFB_LIBS@ ++DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@ ++DIRECTX_CFLAGS = @DIRECTX_CFLAGS@ ++DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@ ++DIVXDEC_LIBS = @DIVXDEC_LIBS@ ++DIVXENC_LIBS = @DIVXENC_LIBS@ ++DLLTOOL = @DLLTOOL@ ++DSYMUTIL = @DSYMUTIL@ ++DTS_LIBS = @DTS_LIBS@ ++DUMPBIN = @DUMPBIN@ ++DVDNAV_CFLAGS = @DVDNAV_CFLAGS@ ++DVDNAV_CONFIG = @DVDNAV_CONFIG@ ++DVDNAV_LIBS = @DVDNAV_LIBS@ ++ECHO_C = @ECHO_C@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ ++ERROR_CFLAGS = @ERROR_CFLAGS@ ++ERROR_CXXFLAGS = @ERROR_CXXFLAGS@ ++EXEEXT = @EXEEXT@ ++EXIF_CFLAGS = @EXIF_CFLAGS@ ++EXIF_LIBS = @EXIF_LIBS@ ++F77 = @F77@ ++FAAC_LIBS = @FAAC_LIBS@ ++FAAD_IS_NEAAC = @FAAD_IS_NEAAC@ ++FAAD_LIBS = @FAAD_LIBS@ ++FC = @FC@ ++FFLAGS = @FFLAGS@ ++FGREP = @FGREP@ ++FLITE_CFLAGS = @FLITE_CFLAGS@ ++FLITE_LIBS = @FLITE_LIBS@ ++GCOV = @GCOV@ ++GCOV_CFLAGS = @GCOV_CFLAGS@ ++GCOV_LIBS = @GCOV_LIBS@ ++GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ ++GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ ++GIO_CFLAGS = @GIO_CFLAGS@ ++GIO_LIBS = @GIO_LIBS@ ++GLIB_CFLAGS = @GLIB_CFLAGS@ ++GLIB_LIBS = @GLIB_LIBS@ ++GLIB_PREFIX = @GLIB_PREFIX@ ++GLIB_REQ = @GLIB_REQ@ ++GME_LIBS = @GME_LIBS@ ++GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@ ++GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@ ++GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GMYTH_CFLAGS = @GMYTH_CFLAGS@ ++GMYTH_LIBS = @GMYTH_LIBS@ ++GREP = @GREP@ ++GSM_LIBS = @GSM_LIBS@ ++GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@ ++GSTPB_PREFIX = @GSTPB_PREFIX@ ++GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@ ++GST_BASE_CFLAGS = @GST_BASE_CFLAGS@ ++GST_BASE_LIBS = @GST_BASE_LIBS@ ++GST_CFLAGS = @GST_CFLAGS@ ++GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@ ++GST_CHECK_LIBS = @GST_CHECK_LIBS@ ++GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@ ++GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@ ++GST_CXXFLAGS = @GST_CXXFLAGS@ ++GST_GDP_CFLAGS = @GST_GDP_CFLAGS@ ++GST_GDP_LIBS = @GST_GDP_LIBS@ ++GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@ ++GST_LIBS = @GST_LIBS@ ++GST_LICENSE = @GST_LICENSE@ ++GST_MAJORMINOR = @GST_MAJORMINOR@ ++GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@ ++GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@ ++GST_PACKAGE_NAME = @GST_PACKAGE_NAME@ ++GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@ ++GST_PLUGINS_ALL = @GST_PLUGINS_ALL@ ++GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@ ++GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@ ++GST_PLUGINS_DIR = @GST_PLUGINS_DIR@ ++GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@ ++GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@ ++GST_PREFIX = @GST_PREFIX@ ++GST_TOOLS_DIR = @GST_TOOLS_DIR@ ++GTKDOC_CHECK = @GTKDOC_CHECK@ ++GTK_CFLAGS = @GTK_CFLAGS@ ++GTK_LIBS = @GTK_LIBS@ ++HAVE_AMRWB = @HAVE_AMRWB@ ++HAVE_BZ2 = @HAVE_BZ2@ ++HAVE_CXX = @HAVE_CXX@ ++HAVE_DIRECTDRAW = @HAVE_DIRECTDRAW@ ++HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@ ++HAVE_DTS = @HAVE_DTS@ ++HAVE_FAAC = @HAVE_FAAC@ ++HAVE_FAAD = @HAVE_FAAD@ ++HAVE_FLITE = @HAVE_FLITE@ ++HAVE_GSM = @HAVE_GSM@ ++HAVE_JP2K = @HAVE_JP2K@ ++HAVE_NAS = @HAVE_NAS@ ++HAVE_X = @HAVE_X@ ++HAVE_X11 = @HAVE_X11@ ++HTML_DIR = @HTML_DIR@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++INTLLIBS = @INTLLIBS@ ++INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ ++IPTC_CFLAGS = @IPTC_CFLAGS@ ++IPTC_LIBS = @IPTC_LIBS@ ++JACK_CFLAGS = @JACK_CFLAGS@ ++JACK_LIBS = @JACK_LIBS@ ++JP2K_LIBS = @JP2K_LIBS@ ++KATE_CFLAGS = @KATE_CFLAGS@ ++KATE_LIBS = @KATE_LIBS@ ++LD = @LD@ ++LDFLAGS = @LDFLAGS@ ++LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@ ++LIBDC1394_LIBS = @LIBDC1394_LIBS@ ++LIBDIR = @LIBDIR@ ++LIBICONV = @LIBICONV@ ++LIBINTL = @LIBINTL@ ++LIBM = @LIBM@ ++LIBMMS_CFLAGS = @LIBMMS_CFLAGS@ ++LIBMMS_LIBS = @LIBMMS_LIBS@ ++LIBOBJS = @LIBOBJS@ ++LIBOIL_CFLAGS = @LIBOIL_CFLAGS@ ++LIBOIL_LIBS = @LIBOIL_LIBS@ ++LIBS = @LIBS@ ++LIBTOOL = @LIBTOOL@ ++LIPO = @LIPO@ ++LN_S = @LN_S@ ++LOCALEDIR = @LOCALEDIR@ ++LRDF_CFLAGS = @LRDF_CFLAGS@ ++LRDF_LIBS = @LRDF_LIBS@ ++LTLIBICONV = @LTLIBICONV@ ++LTLIBINTL = @LTLIBINTL@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAINT = @MAINT@ ++MAKEFLAGS = @MAKEFLAGS@ ++MAKEINFO = @MAKEINFO@ ++METADATA_CFLAGS = @METADATA_CFLAGS@ ++METADATA_LIBS = @METADATA_LIBS@ ++MIMIC_CFLAGS = @MIMIC_CFLAGS@ ++MIMIC_LIBS = @MIMIC_LIBS@ ++MJPEG_CFLAGS = @MJPEG_CFLAGS@ ++MJPEG_LIBS = @MJPEG_LIBS@ ++MKDIR_P = @MKDIR_P@ ++MODPLUG_CFLAGS = @MODPLUG_CFLAGS@ ++MODPLUG_LIBS = @MODPLUG_LIBS@ ++MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@ ++MPEG2ENC_LIBS = @MPEG2ENC_LIBS@ ++MPLEX_CFLAGS = @MPLEX_CFLAGS@ ++MPLEX_LIBS = @MPLEX_LIBS@ ++MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ ++MSGMERGE = @MSGMERGE@ ++MUSEPACK_LIBS = @MUSEPACK_LIBS@ ++MUSICBRAINZ_CFLAGS = @MUSICBRAINZ_CFLAGS@ ++MUSICBRAINZ_LIBS = @MUSICBRAINZ_LIBS@ ++NAS_CFLAGS = @NAS_CFLAGS@ ++NAS_LIBS = @NAS_LIBS@ ++NEON_CFLAGS = @NEON_CFLAGS@ ++NEON_LIBS = @NEON_LIBS@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ ++OBJC = @OBJC@ ++OBJCDEPMODE = @OBJCDEPMODE@ ++OBJC_LDFLAGS = @OBJC_LDFLAGS@ ++OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ ++OFA_CFLAGS = @OFA_CFLAGS@ ++OFA_LIBS = @OFA_LIBS@ ++ORCC = @ORCC@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ ++PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ ++PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ ++PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ ++PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@ ++PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ ++PKG_CONFIG = @PKG_CONFIG@ ++PLUGINDIR = @PLUGINDIR@ ++POSUB = @POSUB@ ++PROFILE_CFLAGS = @PROFILE_CFLAGS@ ++PYTHON = @PYTHON@ ++PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ ++PYTHON_PLATFORM = @PYTHON_PLATFORM@ ++PYTHON_PREFIX = @PYTHON_PREFIX@ ++PYTHON_VERSION = @PYTHON_VERSION@ ++Q = @Q@ ++RANLIB = @RANLIB@ ++RSVG_CFLAGS = @RSVG_CFLAGS@ ++RSVG_LIBS = @RSVG_LIBS@ ++SCHRO_CFLAGS = @SCHRO_CFLAGS@ ++SCHRO_LIBS = @SCHRO_LIBS@ ++SDL_CFLAGS = @SDL_CFLAGS@ ++SDL_CONFIG = @SDL_CONFIG@ ++SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ ++SLV2_CFLAGS = @SLV2_CFLAGS@ ++SLV2_LIBS = @SLV2_LIBS@ ++SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ ++SNDFILE_LIBS = @SNDFILE_LIBS@ ++SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@ ++SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@ ++SPC_LIBS = @SPC_LIBS@ ++STRIP = @STRIP@ ++SWFDEC_CFLAGS = @SWFDEC_CFLAGS@ ++SWFDEC_LIBS = @SWFDEC_LIBS@ ++THEORADEC_CFLAGS = @THEORADEC_CFLAGS@ ++THEORADEC_LIBS = @THEORADEC_LIBS@ ++TIGER_CFLAGS = @TIGER_CFLAGS@ ++TIGER_LIBS = @TIGER_LIBS@ ++TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@ ++TIMIDITY_LIBS = @TIMIDITY_LIBS@ ++USE_NLS = @USE_NLS@ ++V = @V@ ++VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ ++VALGRIND_LIBS = @VALGRIND_LIBS@ ++VALGRIND_PATH = @VALGRIND_PATH@ ++VDPAU_CFLAGS = @VDPAU_CFLAGS@ ++VDPAU_LIBS = @VDPAU_LIBS@ ++VERSION = @VERSION@ ++WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@ ++WILDMIDI_LIBS = @WILDMIDI_LIBS@ ++WIN32_LIBS = @WIN32_LIBS@ ++X11_CFLAGS = @X11_CFLAGS@ ++X11_LIBS = @X11_LIBS@ ++XDG_LIBS = @XDG_LIBS@ ++XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ++XMKMF = @XMKMF@ ++XMP_1_99_5_CFLAGS = @XMP_1_99_5_CFLAGS@ ++XMP_1_99_5_LIBS = @XMP_1_99_5_LIBS@ ++XMP_CFLAGS = @XMP_CFLAGS@ ++XMP_LIBS = @XMP_LIBS@ ++XVID_LIBS = @XVID_LIBS@ ++X_CFLAGS = @X_CFLAGS@ ++X_EXTRA_LIBS = @X_EXTRA_LIBS@ ++X_LIBS = @X_LIBS@ ++X_PRE_LIBS = @X_PRE_LIBS@ ++ZBAR_CFLAGS = @ZBAR_CFLAGS@ ++ZBAR_LIBS = @ZBAR_LIBS@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ++ac_ct_OBJC = @ac_ct_OBJC@ ++am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ ++am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ ++install_sh = @install_sh@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++pkgpyexecdir = @pkgpyexecdir@ ++pkgpythondir = @pkgpythondir@ ++plugindir = @plugindir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++pyexecdir = @pyexecdir@ ++pythondir = @pythondir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++shavedir = @shavedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_build_prefix = @top_build_prefix@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ ++plugin_LTLIBRARIES = libgstautoconvert.la ++libgstautoconvert_la_SOURCES = gstautoconvert.c gstautoconvert.h ++libgstautoconvert_la_CFLAGS = $(GST_CFLAGS) ++libgstautoconvert_la_LIBADD = $(GST_LIBS) ++libgstautoconvert_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) ++libgstautoconvert_la_LIBTOOLFLAGS = --tag=disable-static ++all: all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/autoconvert/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnu gst/autoconvert/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) ++ @$(NORMAL_INSTALL) ++ test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)" ++ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ ++ list2=; for p in $$list; do \ ++ if test -f $$p; then \ ++ list2="$$list2 $$p"; \ ++ else :; fi; \ ++ done; \ ++ test -z "$$list2" || { \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \ ++ } ++ ++uninstall-pluginLTLIBRARIES: ++ @$(NORMAL_UNINSTALL) ++ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ ++ for p in $$list; do \ ++ $(am__strip_dir) \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \ ++ done ++ ++clean-pluginLTLIBRARIES: ++ -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) ++ @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ ++ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ++ test "$$dir" != "$$p" || dir=.; \ ++ echo "rm -f \"$${dir}/so_locations\""; \ ++ rm -f "$${dir}/so_locations"; \ ++ done ++libgstautoconvert.la: $(libgstautoconvert_la_OBJECTS) $(libgstautoconvert_la_DEPENDENCIES) ++ $(libgstautoconvert_la_LINK) -rpath $(plugindir) $(libgstautoconvert_la_OBJECTS) $(libgstautoconvert_la_LIBADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstautoconvert_la-gstautoconvert.Plo@am__quote@ ++ ++.c.o: ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< ++ ++.c.obj: ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< ++ ++libgstautoconvert_la-gstautoconvert.lo: gstautoconvert.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstautoconvert_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstautoconvert_la_CFLAGS) $(CFLAGS) -MT libgstautoconvert_la-gstautoconvert.lo -MD -MP -MF $(DEPDIR)/libgstautoconvert_la-gstautoconvert.Tpo -c -o libgstautoconvert_la-gstautoconvert.lo `test -f 'gstautoconvert.c' || echo '$(srcdir)/'`gstautoconvert.c ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstautoconvert_la-gstautoconvert.Tpo $(DEPDIR)/libgstautoconvert_la-gstautoconvert.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstautoconvert.c' object='libgstautoconvert_la-gstautoconvert.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstautoconvert_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstautoconvert_la_CFLAGS) $(CFLAGS) -c -o libgstautoconvert_la-gstautoconvert.lo `test -f 'gstautoconvert.c' || echo '$(srcdir)/'`gstautoconvert.c ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ mkid -fID $$unique ++tags: TAGS ++ ++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ set x; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++check-am: all-am ++check: check-am ++all-am: Makefile $(LTLIBRARIES) ++installdirs: ++ for dir in "$(DESTDIR)$(plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \ ++ mostlyclean-am ++ ++distclean: distclean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: install-pluginLTLIBRARIES ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libtool clean-pluginLTLIBRARIES ctags distclean \ ++ distclean-compile distclean-generic distclean-libtool \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-pluginLTLIBRARIES \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-compile \ ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags uninstall uninstall-am uninstall-pluginLTLIBRARIES ++ ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstdtmf.c gst-plugins-good0.10-0.10.23/farsight/dtmf/gstdtmf.c +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstdtmf.c 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/gstdtmf.c 2009-11-05 16:29:50.000000000 -0500 +@@ -0,0 +1,33 @@ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include "gstdtmfdetect.h" ++#include "gstdtmfsrc.h" ++#include "gstrtpdtmfsrc.h" ++#include "gstrtpdtmfdepay.h" ++ ++ ++static gboolean ++plugin_init (GstPlugin * plugin) ++{ ++ if (!gst_dtmf_detect_plugin_init (plugin)) ++ return FALSE; ++ ++ if (!gst_dtmf_src_plugin_init (plugin)) ++ return FALSE; ++ ++ if (!gst_rtp_dtmf_src_plugin_init (plugin)) ++ return FALSE; ++ ++ if (!gst_rtp_dtmf_depay_plugin_init (plugin)) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, ++ GST_VERSION_MINOR, ++ "dtmf", "DTMF plugins", ++ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN) +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstdtmfdetect.c gst-plugins-good0.10-0.10.23/farsight/dtmf/gstdtmfdetect.c +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstdtmfdetect.c 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/gstdtmfdetect.c 2009-11-05 16:29:50.000000000 -0500 +@@ -0,0 +1,308 @@ ++/* ++ * GStreamer - DTMF Detection ++ * ++ * Copyright 2009 Nokia Corporation ++ * Copyright 2009 Collabora Ltd, ++ * @author: Olivier Crete ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ * ++ */ ++ ++/** ++ * SECTION:element-dtmfdetect ++ * @short_description: Detects DTMF tones ++ * ++ * This element will detect DTMF tones and emit messages ++ * ++ * The message is called "dtmf-event" and has the following fields ++ * ++ * ++ * ++ * ++ * ++ * ++ * ++ * ++ * Name ++ * GType ++ * Possible values ++ * Purpose ++ * ++ * ++ * ++ * ++ * type ++ * G_TYPE_INT ++ * 0-1 ++ * The application uses this field to specify which of the two methods ++ * specified in RFC 2833 to use. The value should be 0 for tones and 1 for ++ * named events. Tones are specified by their frequencies and events are specied ++ * by their number. This element can only take events as input. Do not confuse ++ * with "method" which specified the output. ++ * ++ * ++ * ++ * number ++ * G_TYPE_INT ++ * 0-16 ++ * The event number. ++ * ++ * ++ * method ++ * G_TYPE_INT ++ * 2 ++ * This field will always been 2 (ie sound) from this element. ++ * ++ * ++ * ++ * ++ * ++ */ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include "gstdtmfdetect.h" ++ ++#include ++ ++GST_DEBUG_CATEGORY (dtmf_detect_debug); ++#define GST_CAT_DEFAULT (dtmf_detect_debug) ++ ++/* elementfactory information */ ++static const GstElementDetails gst_dtmf_detect_details = ++GST_ELEMENT_DETAILS ("DTMF detector element", ++ "Detect", ++ "This element detects DTMF tones", ++ "Olivier Crete "); ++ ++ ++static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", ++ GST_PAD_SINK, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS ("audio/x-raw-int, " ++ "width = (int) 16, " ++ "depth = (int) 16, " ++ "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", " ++ "signed = (bool) true, rate = (int) [1, MAX], channels = (int) 1")); ++ ++static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", ++ GST_PAD_SRC, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS ("audio/x-raw-int, " ++ "width = (int) 16, " ++ "depth = (int) 16, " ++ "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", " ++ "signed = (bool) true, rate = (int) [1, MAX], channels = (int) 1")); ++ ++/* signals and args */ ++enum ++{ ++ /* FILL ME */ ++ LAST_SIGNAL ++}; ++ ++enum ++{ ++ PROP_0, ++}; ++ ++static gboolean gst_dtmf_detect_set_caps (GstBaseTransform * trans, ++ GstCaps * incaps, GstCaps * outcaps); ++static GstFlowReturn gst_dtmf_detect_transform_ip (GstBaseTransform * trans, ++ GstBuffer * buf); ++static gboolean gst_dtmf_detect_event (GstBaseTransform * trans, ++ GstEvent * event); ++ ++static void ++_do_init (GType type) ++{ ++ GST_DEBUG_CATEGORY_INIT (dtmf_detect_debug, "dtmfdetect", 0, "dtmfdetect"); ++} ++ ++GST_BOILERPLATE_FULL (GstDtmfDetect, gst_dtmf_detect, GstBaseTransform, ++ GST_TYPE_BASE_TRANSFORM, _do_init); ++ ++static void ++gst_dtmf_detect_base_init (gpointer klass) ++{ ++ GstElementClass *element_class = GST_ELEMENT_CLASS (klass); ++ ++ gst_element_class_add_pad_template (element_class, ++ gst_static_pad_template_get (&srctemplate)); ++ gst_element_class_add_pad_template (element_class, ++ gst_static_pad_template_get (&sinktemplate)); ++ ++ gst_element_class_set_details (element_class, &gst_dtmf_detect_details); ++} ++ ++static void ++gst_dtmf_detect_class_init (GstDtmfDetectClass * klass) ++{ ++ GstBaseTransformClass *gstbasetransform_class; ++ ++ gstbasetransform_class = (GstBaseTransformClass *) klass; ++ ++ gstbasetransform_class->set_caps = ++ GST_DEBUG_FUNCPTR (gst_dtmf_detect_set_caps); ++ gstbasetransform_class->transform_ip = ++ GST_DEBUG_FUNCPTR (gst_dtmf_detect_transform_ip); ++ gstbasetransform_class->event = GST_DEBUG_FUNCPTR (gst_dtmf_detect_event); ++} ++ ++static void ++gst_dtmf_detect_init (GstDtmfDetect * dtmfdetect, GstDtmfDetectClass * klass) ++{ ++ gst_base_transform_set_passthrough (GST_BASE_TRANSFORM (dtmfdetect), TRUE); ++ gst_base_transform_set_gap_aware (GST_BASE_TRANSFORM (dtmfdetect), TRUE); ++} ++ ++static gboolean ++gst_dtmf_detect_set_caps (GstBaseTransform * trans, GstCaps * incaps, ++ GstCaps * outcaps) ++{ ++ GstDtmfDetect *self = GST_DTMF_DETECT (trans); ++ GstStructure *s = gst_caps_get_structure (incaps, 0); ++ ++ if (!gst_structure_get_int (s, "rate", &self->rate)) ++ return FALSE; ++ ++ zap_dtmf_detect_init (&self->dtmf_state); ++ ++ return TRUE; ++} ++ ++ ++static GstFlowReturn ++gst_dtmf_detect_transform_ip (GstBaseTransform * trans, GstBuffer * buf) ++{ ++ GstDtmfDetect *self = GST_DTMF_DETECT (trans); ++ int dtmf_count; ++ char dtmfbuf[MAX_DTMF_DIGITS] = ""; ++ int i; ++ ++ if (GST_BUFFER_IS_DISCONT (buf)) ++ zap_dtmf_detect_init (&self->dtmf_state); ++ ++ ++ zap_dtmf_detect (&self->dtmf_state, (int16_t *) GST_BUFFER_DATA (buf), ++ GST_BUFFER_SIZE (buf) / 2, FALSE); ++ ++ dtmf_count = zap_dtmf_get (&self->dtmf_state, dtmfbuf, MAX_DTMF_DIGITS); ++ ++ if (dtmf_count) ++ GST_DEBUG_OBJECT (self, "Got %d DTMF events: %s", dtmf_count, dtmfbuf); ++ else ++ GST_LOG_OBJECT (self, "Got no DTMF events"); ++ ++ for (i = 0; i < dtmf_count; i++) { ++ GstMessage *dtmf_message = NULL; ++ GstStructure *structure; ++ gint dtmf_payload_event; ++ ++ GST_DEBUG_OBJECT (self, "Got DTMF event %c", dtmfbuf[i]); ++ ++ switch (dtmfbuf[i]) { ++ case '0': ++ dtmf_payload_event = 0; ++ break; ++ case '1': ++ dtmf_payload_event = 1; ++ break; ++ case '2': ++ dtmf_payload_event = 2; ++ break; ++ case '3': ++ dtmf_payload_event = 3; ++ break; ++ case '4': ++ dtmf_payload_event = 4; ++ break; ++ case '5': ++ dtmf_payload_event = 5; ++ break; ++ case '6': ++ dtmf_payload_event = 6; ++ break; ++ case '7': ++ dtmf_payload_event = 7; ++ break; ++ case '8': ++ dtmf_payload_event = 8; ++ break; ++ case '9': ++ dtmf_payload_event = 9; ++ break; ++ case '*': ++ dtmf_payload_event = 10; ++ break; ++ case '#': ++ dtmf_payload_event = 11; ++ break; ++ case 'A': ++ dtmf_payload_event = 12; ++ break; ++ case 'B': ++ dtmf_payload_event = 13; ++ break; ++ case 'C': ++ dtmf_payload_event = 14; ++ break; ++ case 'D': ++ dtmf_payload_event = 15; ++ break; ++ default: ++ continue; ++ } ++ ++ structure = gst_structure_new ("dtmf-event", ++ "type", G_TYPE_INT, 1, ++ "number", G_TYPE_INT, dtmf_payload_event, ++ "method", G_TYPE_INT, 2, NULL); ++ dtmf_message = gst_message_new_element (GST_OBJECT (self), structure); ++ gst_element_post_message (GST_ELEMENT (self), dtmf_message); ++ } ++ ++ return GST_FLOW_OK; ++} ++ ++ ++static gboolean ++gst_dtmf_detect_event (GstBaseTransform * trans, GstEvent * event) ++{ ++ GstDtmfDetect *self = GST_DTMF_DETECT (trans); ++ ++ switch (GST_EVENT_TYPE (event)) { ++ case GST_EVENT_FLUSH_STOP: ++ zap_dtmf_detect_init (&self->dtmf_state); ++ break; ++ default: ++ break; ++ } ++ ++ return GST_CALL_PARENT_WITH_DEFAULT (GST_BASE_TRANSFORM_CLASS, event, ++ (trans, event), TRUE); ++} ++ ++ ++gboolean ++gst_dtmf_detect_plugin_init (GstPlugin * plugin) ++{ ++ return gst_element_register (plugin, "dtmfdetect", ++ GST_RANK_MARGINAL, GST_TYPE_DTMF_DETECT); ++} +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstdtmfdetect.h gst-plugins-good0.10-0.10.23/farsight/dtmf/gstdtmfdetect.h +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstdtmfdetect.h 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/gstdtmfdetect.h 2009-11-05 16:29:50.000000000 -0500 +@@ -0,0 +1,73 @@ ++/* ++ * GStreamer - DTMF Detection ++ * ++ * Copyright 2009 Nokia Corporation ++ * Copyright 2009 Collabora Ltd, ++ * @author: Olivier Crete ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ * ++ */ ++ ++#ifndef __GST_DTMF_DETECT_H__ ++#define __GST_DTMF_DETECT_H__ ++ ++#include ++#include ++ ++#include "tone_detect.h" ++ ++G_BEGIN_DECLS ++ ++/* #define's don't like whitespacey bits */ ++#define GST_TYPE_DTMF_DETECT \ ++ (gst_dtmf_detect_get_type()) ++#define GST_DTMF_DETECT(obj) \ ++ (G_TYPE_CHECK_INSTANCE_CAST((obj), \ ++ GST_TYPE_DTMF_DETECT,GstDtmfDetect)) ++#define GST_DTMF_DETECT_CLASS(klass) \ ++ (G_TYPE_CHECK_CLASS_CAST((klass), \ ++ GST_TYPE_DTMF_DETECT,GstDtmfDetectClass)) ++#define GST_IS_DTMF_DETECT(obj) \ ++ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DTMF_DETECT)) ++#define GST_IS_DTMF_DETECT_CLASS(obj) \ ++ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DTMF_DETECT)) ++ ++typedef struct _GstDtmfDetect GstDtmfDetect; ++typedef struct _GstDtmfDetectClass GstDtmfDetectClass; ++typedef struct _GstDtmfDetectPrivate GstDtmfDetectPrivate; ++ ++struct _GstDtmfDetect ++{ ++ GstBaseTransform parent; ++ ++ gint rate; ++ ++ dtmf_detect_state_t dtmf_state; ++}; ++ ++struct _GstDtmfDetectClass ++{ ++ GstBaseTransformClass parent_class; ++}; ++ ++GType gst_dtmf_detect_get_type (void); ++ ++gboolean gst_dtmf_detect_plugin_init (GstPlugin *plugin); ++ ++G_END_DECLS ++ ++#endif /* __GST_DTMF_DETECT_H__ */ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstdtmfsrc.c gst-plugins-good0.10-0.10.23/farsight/dtmf/gstdtmfsrc.c +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstdtmfsrc.c 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/gstdtmfsrc.c 2009-11-05 16:29:50.000000000 -0500 +@@ -0,0 +1,905 @@ ++/* GStreamer DTMF source ++ * ++ * gstdtmfsrc.c: ++ * ++ * Copyright (C) <2007> Collabora. ++ * Contact: Youness Alaoui ++ * Copyright (C) <2007> Nokia Corporation. ++ * Contact: Zeeshan Ali ++ * Copyright (C) 1999,2000 Erik Walthinsen ++ * 2000,2005 Wim Taymans ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++/** ++ * SECTION:element-dtmfsrc ++ * @see_also: rtpdtmsrc, rtpdtmfmuxx ++ * ++ * The DTMFSrc element generates DTMF (ITU-T Q.23 Specification) tone packets on request ++ * from application. The application communicates the beginning and end of a ++ * DTMF event using custom upstream gstreamer events. To report a DTMF event, an ++ * application must send an event of type GST_EVENT_CUSTOM_UPSTREAM, having a ++ * structure of name "dtmf-event" with fields set according to the following ++ * table: ++ * ++ * ++ * ++ * ++ * ++ * ++ * ++ * ++ * ++ * Name ++ * GType ++ * Possible values ++ * Purpose ++ * ++ * ++ * ++ * ++ * type ++ * G_TYPE_INT ++ * 0-1 ++ * The application uses this field to specify which of the two methods ++ * specified in RFC 2833 to use. The value should be 0 for tones and 1 for ++ * named events. Tones are specified by their frequencies and events are specied ++ * by their number. This element can only take events as input. Do not confuse ++ * with "method" which specified the output. ++ * ++ * ++ * ++ * number ++ * G_TYPE_INT ++ * 0-16 ++ * The event number. ++ * ++ * ++ * volume ++ * G_TYPE_INT ++ * 0-36 ++ * This field describes the power level of the tone, expressed in dBm0 ++ * after dropping the sign. Power levels range from 0 to -63 dBm0. The range of ++ * valid DTMF is from 0 to -36 dBm0. Can be omitted if start is set to FALSE. ++ * ++ * ++ * ++ * start ++ * G_TYPE_BOOLEAN ++ * True or False ++ * Whether the event is starting or ending. ++ * ++ * ++ * method ++ * G_TYPE_INT ++ * 2 ++ * The method used for sending event, this element will react if this ++ * field is absent or 2. ++ * ++ * ++ * ++ * ++ * ++ * ++ * For example, the following code informs the pipeline (and in turn, the ++ * DTMFSrc element inside the pipeline) about the start of a DTMF named ++ * event '1' of volume -25 dBm0: ++ * ++ * ++ * structure = gst_structure_new ("dtmf-event", ++ * "type", G_TYPE_INT, 1, ++ * "number", G_TYPE_INT, 1, ++ * "volume", G_TYPE_INT, 25, ++ * "start", G_TYPE_BOOLEAN, TRUE, NULL); ++ * ++ * event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, structure); ++ * gst_element_send_event (pipeline, event); ++ * ++ * ++ */ ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#include ++#include ++#include ++ ++#include ++ ++#ifndef M_PI ++# define M_PI 3.14159265358979323846 /* pi */ ++#endif ++ ++ ++#include "gstdtmfsrc.h" ++ ++#define GST_TONE_DTMF_TYPE_EVENT 1 ++#define DEFAULT_PACKET_INTERVAL 50 /* ms */ ++#define MIN_PACKET_INTERVAL 10 /* ms */ ++#define MAX_PACKET_INTERVAL 50 /* ms */ ++#define DEFAULT_SAMPLE_RATE 8000 ++#define SAMPLE_SIZE 16 ++#define CHANNELS 1 ++#define MIN_EVENT 0 ++#define MAX_EVENT 16 ++#define MIN_VOLUME 0 ++#define MAX_VOLUME 36 ++#define MIN_INTER_DIGIT_INTERVAL 100 ++#define MIN_PULSE_DURATION 250 ++#define MIN_DUTY_CYCLE (MIN_INTER_DIGIT_INTERVAL + MIN_PULSE_DURATION) ++ ++ ++typedef struct st_dtmf_key ++{ ++ char *event_name; ++ int event_encoding; ++ float low_frequency; ++ float high_frequency; ++} DTMF_KEY; ++ ++static const DTMF_KEY DTMF_KEYS[] = { ++ {"DTMF_KEY_EVENT_0", 0, 941, 1336}, ++ {"DTMF_KEY_EVENT_1", 1, 697, 1209}, ++ {"DTMF_KEY_EVENT_2", 2, 697, 1336}, ++ {"DTMF_KEY_EVENT_3", 3, 697, 1477}, ++ {"DTMF_KEY_EVENT_4", 4, 770, 1209}, ++ {"DTMF_KEY_EVENT_5", 5, 770, 1336}, ++ {"DTMF_KEY_EVENT_6", 6, 770, 1477}, ++ {"DTMF_KEY_EVENT_7", 7, 852, 1209}, ++ {"DTMF_KEY_EVENT_8", 8, 852, 1336}, ++ {"DTMF_KEY_EVENT_9", 9, 852, 1477}, ++ {"DTMF_KEY_EVENT_S", 10, 941, 1209}, ++ {"DTMF_KEY_EVENT_P", 11, 941, 1477}, ++ {"DTMF_KEY_EVENT_A", 12, 697, 1633}, ++ {"DTMF_KEY_EVENT_B", 13, 770, 1633}, ++ {"DTMF_KEY_EVENT_C", 14, 852, 1633}, ++ {"DTMF_KEY_EVENT_D", 15, 941, 1633}, ++}; ++ ++#define MAX_DTMF_EVENTS 16 ++ ++enum ++{ ++ DTMF_KEY_EVENT_1 = 1, ++ DTMF_KEY_EVENT_2 = 2, ++ DTMF_KEY_EVENT_3 = 3, ++ DTMF_KEY_EVENT_4 = 4, ++ DTMF_KEY_EVENT_5 = 5, ++ DTMF_KEY_EVENT_6 = 6, ++ DTMF_KEY_EVENT_7 = 7, ++ DTMF_KEY_EVENT_8 = 8, ++ DTMF_KEY_EVENT_9 = 9, ++ DTMF_KEY_EVENT_0 = 0, ++ DTMF_KEY_EVENT_STAR = 10, ++ DTMF_KEY_EVENT_POUND = 11, ++ DTMF_KEY_EVENT_A = 12, ++ DTMF_KEY_EVENT_B = 13, ++ DTMF_KEY_EVENT_C = 14, ++ DTMF_KEY_EVENT_D = 15, ++}; ++ ++/* elementfactory information */ ++static const GstElementDetails gst_dtmf_src_details = ++GST_ELEMENT_DETAILS ("DTMF tone generator", ++ "Source/Audio", ++ "Generates DTMF tones", ++ "Youness Alaoui "); ++ ++GST_DEBUG_CATEGORY_STATIC (gst_dtmf_src_debug); ++#define GST_CAT_DEFAULT gst_dtmf_src_debug ++ ++enum ++{ ++ PROP_0, ++ PROP_INTERVAL, ++}; ++ ++static GstStaticPadTemplate gst_dtmf_src_template = ++GST_STATIC_PAD_TEMPLATE ("src", ++ GST_PAD_SRC, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS ("audio/x-raw-int, " ++ "width = (int) 16, " ++ "depth = (int) 16, " ++ "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", " ++ "signed = (bool) true, rate = (int) [1, MAX], channels = (int) 1") ++ ); ++ ++GST_BOILERPLATE (GstDTMFSrc, gst_dtmf_src, GstBaseSrc, GST_TYPE_BASE_SRC); ++ ++static void gst_dtmf_src_finalize (GObject * object); ++ ++static void gst_dtmf_src_set_property (GObject * object, guint prop_id, ++ const GValue * value, GParamSpec * pspec); ++static void gst_dtmf_src_get_property (GObject * object, guint prop_id, ++ GValue * value, GParamSpec * pspec); ++static gboolean gst_dtmf_src_handle_event (GstBaseSrc * src, GstEvent * event); ++static GstStateChangeReturn gst_dtmf_src_change_state (GstElement * element, ++ GstStateChange transition); ++static GstFlowReturn gst_dtmf_src_create (GstBaseSrc * basesrc, ++ guint64 offset, guint length, GstBuffer ** buffer); ++static void gst_dtmf_src_add_start_event (GstDTMFSrc * dtmfsrc, ++ gint event_number, gint event_volume); ++static void gst_dtmf_src_add_stop_event (GstDTMFSrc * dtmfsrc); ++ ++static gboolean gst_dtmf_src_unlock (GstBaseSrc * src); ++ ++static gboolean gst_dtmf_src_unlock_stop (GstBaseSrc * src); ++static gboolean gst_dtmf_src_negotiate (GstBaseSrc * basesrc); ++ ++static void ++gst_dtmf_src_base_init (gpointer g_class) ++{ ++ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); ++ ++ GST_DEBUG_CATEGORY_INIT (gst_dtmf_src_debug, "dtmfsrc", 0, "dtmfsrc element"); ++ ++ gst_element_class_add_pad_template (element_class, ++ gst_static_pad_template_get (&gst_dtmf_src_template)); ++ ++ gst_element_class_set_details (element_class, &gst_dtmf_src_details); ++} ++ ++static void ++gst_dtmf_src_class_init (GstDTMFSrcClass * klass) ++{ ++ GObjectClass *gobject_class; ++ GstBaseSrcClass *gstbasesrc_class; ++ GstElementClass *gstelement_class; ++ ++ gobject_class = G_OBJECT_CLASS (klass); ++ gstbasesrc_class = GST_BASE_SRC_CLASS (klass); ++ gstelement_class = GST_ELEMENT_CLASS (klass); ++ ++ ++ gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_dtmf_src_finalize); ++ gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_dtmf_src_set_property); ++ gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_dtmf_src_get_property); ++ ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_INTERVAL, ++ g_param_spec_uint ("interval", "Interval between tone packets", ++ "Interval in ms between two tone packets", MIN_PACKET_INTERVAL, ++ MAX_PACKET_INTERVAL, DEFAULT_PACKET_INTERVAL, G_PARAM_READWRITE)); ++ ++ gstelement_class->change_state = ++ GST_DEBUG_FUNCPTR (gst_dtmf_src_change_state); ++ gstbasesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_dtmf_src_unlock); ++ gstbasesrc_class->unlock_stop = GST_DEBUG_FUNCPTR (gst_dtmf_src_unlock_stop); ++ ++ gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_dtmf_src_handle_event); ++ gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_dtmf_src_create); ++ gstbasesrc_class->negotiate = GST_DEBUG_FUNCPTR (gst_dtmf_src_negotiate); ++} ++ ++static void ++event_free (GstDTMFSrcEvent * event) ++{ ++ if (event) ++ g_slice_free (GstDTMFSrcEvent, event); ++} ++ ++static void ++gst_dtmf_src_init (GstDTMFSrc * dtmfsrc, GstDTMFSrcClass * g_class) ++{ ++ /* we operate in time */ ++ gst_base_src_set_format (GST_BASE_SRC (dtmfsrc), GST_FORMAT_TIME); ++ gst_base_src_set_live (GST_BASE_SRC (dtmfsrc), TRUE); ++ ++ dtmfsrc->interval = DEFAULT_PACKET_INTERVAL; ++ ++ dtmfsrc->event_queue = g_async_queue_new_full ((GDestroyNotify) event_free); ++ dtmfsrc->last_event = NULL; ++ ++ dtmfsrc->sample_rate = DEFAULT_SAMPLE_RATE; ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "init done"); ++} ++ ++static void ++gst_dtmf_src_finalize (GObject * object) ++{ ++ GstDTMFSrc *dtmfsrc; ++ ++ dtmfsrc = GST_DTMF_SRC (object); ++ ++ if (dtmfsrc->event_queue) { ++ g_async_queue_unref (dtmfsrc->event_queue); ++ dtmfsrc->event_queue = NULL; ++ } ++ ++ G_OBJECT_CLASS (parent_class)->finalize (object); ++} ++ ++static gboolean ++gst_dtmf_src_handle_dtmf_event (GstDTMFSrc * dtmfsrc, ++ const GstStructure * event_structure) ++{ ++ gint event_type; ++ gboolean start; ++ gint method; ++ ++ if (!gst_structure_get_int (event_structure, "type", &event_type) || ++ !gst_structure_get_boolean (event_structure, "start", &start) || ++ (start == TRUE && event_type != GST_TONE_DTMF_TYPE_EVENT)) ++ goto failure; ++ ++ if (gst_structure_get_int (event_structure, "method", &method)) { ++ if (method != 2) { ++ goto failure; ++ } ++ } ++ ++ if (start) { ++ gint event_number; ++ gint event_volume; ++ ++ if (!gst_structure_get_int (event_structure, "number", &event_number) || ++ !gst_structure_get_int (event_structure, "volume", &event_volume)) ++ goto failure; ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Received start event %d with volume %d", ++ event_number, event_volume); ++ gst_dtmf_src_add_start_event (dtmfsrc, event_number, event_volume); ++ } ++ ++ else { ++ GST_DEBUG_OBJECT (dtmfsrc, "Received stop event"); ++ gst_dtmf_src_add_stop_event (dtmfsrc); ++ } ++ ++ return TRUE; ++failure: ++ return FALSE; ++} ++ ++static gboolean ++gst_dtmf_src_handle_custom_upstream (GstDTMFSrc * dtmfsrc, GstEvent * event) ++{ ++ gboolean result = FALSE; ++ const GstStructure *structure; ++ GstState state; ++ GstStateChangeReturn ret; ++ ++ ret = gst_element_get_state (GST_ELEMENT (dtmfsrc), &state, NULL, 0); ++ if (ret != GST_STATE_CHANGE_SUCCESS || state != GST_STATE_PLAYING) { ++ GST_DEBUG_OBJECT (dtmfsrc, "Received event while not in PLAYING state"); ++ goto ret; ++ } ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Received event is of our interest"); ++ structure = gst_event_get_structure (event); ++ if (structure && gst_structure_has_name (structure, "dtmf-event")) ++ result = gst_dtmf_src_handle_dtmf_event (dtmfsrc, structure); ++ ++ret: ++ return result; ++} ++ ++static gboolean ++gst_dtmf_src_handle_event (GstBaseSrc * src, GstEvent * event) ++{ ++ GstDTMFSrc *dtmfsrc; ++ gboolean result = FALSE; ++ ++ dtmfsrc = GST_DTMF_SRC (src); ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Received an event on the src pad"); ++ if (GST_EVENT_TYPE (event) == GST_EVENT_CUSTOM_UPSTREAM) { ++ result = gst_dtmf_src_handle_custom_upstream (dtmfsrc, event); ++ } ++ ++ return result; ++} ++ ++static void ++gst_dtmf_src_set_property (GObject * object, guint prop_id, ++ const GValue * value, GParamSpec * pspec) ++{ ++ GstDTMFSrc *dtmfsrc; ++ ++ dtmfsrc = GST_DTMF_SRC (object); ++ ++ switch (prop_id) { ++ case PROP_INTERVAL: ++ dtmfsrc->interval = g_value_get_uint (value); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++static void ++gst_dtmf_src_get_property (GObject * object, guint prop_id, GValue * value, ++ GParamSpec * pspec) ++{ ++ GstDTMFSrc *dtmfsrc; ++ ++ dtmfsrc = GST_DTMF_SRC (object); ++ ++ switch (prop_id) { ++ case PROP_INTERVAL: ++ g_value_set_uint (value, dtmfsrc->interval); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++static void ++gst_dtmf_src_set_stream_lock (GstDTMFSrc * dtmfsrc, gboolean lock) ++{ ++ GstPad *srcpad = GST_BASE_SRC_PAD (dtmfsrc); ++ GstEvent *event; ++ GstStructure *structure; ++ ++ structure = gst_structure_new ("stream-lock", ++ "lock", G_TYPE_BOOLEAN, lock, NULL); ++ ++ event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM_OOB, structure); ++ if (!gst_pad_push_event (srcpad, event)) { ++ GST_WARNING_OBJECT (dtmfsrc, "stream-lock event not handled"); ++ } ++} ++ ++static void ++gst_dtmf_prepare_timestamps (GstDTMFSrc * dtmfsrc) ++{ ++ GstClock *clock; ++ GstClockTime base_time; ++ ++ base_time = gst_element_get_base_time (GST_ELEMENT (dtmfsrc)); ++ ++ clock = gst_element_get_clock (GST_ELEMENT (dtmfsrc)); ++ if (clock != NULL) { ++#ifdef MAEMO_BROKEN ++ dtmfsrc->timestamp = gst_clock_get_time (clock); ++#else ++ dtmfsrc->timestamp = gst_clock_get_time (clock) - base_time; ++#endif ++ gst_object_unref (clock); ++ } else { ++ gchar *dtmf_name = gst_element_get_name (dtmfsrc); ++ GST_ERROR_OBJECT (dtmfsrc, "No clock set for element %s", dtmf_name); ++ dtmfsrc->timestamp = GST_CLOCK_TIME_NONE; ++ g_free (dtmf_name); ++ } ++} ++ ++static void ++gst_dtmf_src_add_start_event (GstDTMFSrc * dtmfsrc, gint event_number, ++ gint event_volume) ++{ ++ ++ GstDTMFSrcEvent *event = g_slice_new0 (GstDTMFSrcEvent); ++ event->event_type = DTMF_EVENT_TYPE_START; ++ event->sample = 0; ++ event->event_number = CLAMP (event_number, MIN_EVENT, MAX_EVENT); ++ event->volume = CLAMP (event_volume, MIN_VOLUME, MAX_VOLUME); ++ ++ g_async_queue_push (dtmfsrc->event_queue, event); ++} ++ ++static void ++gst_dtmf_src_add_stop_event (GstDTMFSrc * dtmfsrc) ++{ ++ ++ GstDTMFSrcEvent *event = g_slice_new0 (GstDTMFSrcEvent); ++ event->event_type = DTMF_EVENT_TYPE_STOP; ++ event->sample = 0; ++ event->event_number = 0; ++ event->volume = 0; ++ ++ g_async_queue_push (dtmfsrc->event_queue, event); ++} ++ ++static void ++gst_dtmf_src_generate_silence (GstBuffer * buffer, float duration, ++ gint sample_rate) ++{ ++ gint buf_size; ++ ++ /* Create a buffer with data set to 0 */ ++ buf_size = ((duration / 1000) * sample_rate * SAMPLE_SIZE * CHANNELS) / 8; ++ GST_BUFFER_SIZE (buffer) = buf_size; ++ GST_BUFFER_MALLOCDATA (buffer) = g_malloc0 (buf_size); ++ GST_BUFFER_DATA (buffer) = GST_BUFFER_MALLOCDATA (buffer); ++ ++} ++ ++static void ++gst_dtmf_src_generate_tone (GstDTMFSrcEvent * event, DTMF_KEY key, ++ float duration, GstBuffer * buffer, gint sample_rate) ++{ ++ gint16 *p; ++ gint tone_size; ++ double i = 0; ++ double amplitude, f1, f2; ++ double volume_factor; ++ ++ /* Create a buffer for the tone */ ++ tone_size = ((duration / 1000) * sample_rate * SAMPLE_SIZE * CHANNELS) / 8; ++ GST_BUFFER_SIZE (buffer) = tone_size; ++ GST_BUFFER_MALLOCDATA (buffer) = g_malloc (tone_size); ++ GST_BUFFER_DATA (buffer) = GST_BUFFER_MALLOCDATA (buffer); ++ ++ p = (gint16 *) GST_BUFFER_MALLOCDATA (buffer); ++ ++ volume_factor = pow (10, (-event->volume) / 20); ++ ++ /* ++ * For each sample point we calculate 'x' as the ++ * the amplitude value. ++ */ ++ for (i = 0; i < (tone_size / (SAMPLE_SIZE / 8)); i++) { ++ /* ++ * We add the fundamental frequencies together. ++ */ ++ f1 = sin (2 * M_PI * key.low_frequency * (event->sample / sample_rate)); ++ f2 = sin (2 * M_PI * key.high_frequency * (event->sample / sample_rate)); ++ ++ amplitude = (f1 + f2) / 2; ++ ++ /* Adjust the volume */ ++ amplitude *= volume_factor; ++ ++ /* Make the [-1:1] interval into a [-32767:32767] interval */ ++ amplitude *= 32767; ++ ++ /* Store it in the data buffer */ ++ *(p++) = (gint16) amplitude; ++ ++ (event->sample)++; ++ } ++} ++ ++ ++ ++static GstBuffer * ++gst_dtmf_src_create_next_tone_packet (GstDTMFSrc * dtmfsrc, ++ GstDTMFSrcEvent * event) ++{ ++ GstBuffer *buf = NULL; ++ gboolean send_silence = FALSE; ++ GstPad *srcpad = GST_BASE_SRC_PAD (dtmfsrc); ++ ++ GST_LOG_OBJECT (dtmfsrc, "Creating buffer for tone %s", ++ DTMF_KEYS[event->event_number].event_name); ++ ++ /* create buffer to hold the tone */ ++ buf = gst_buffer_new (); ++ ++ if (event->packet_count * dtmfsrc->interval < MIN_INTER_DIGIT_INTERVAL) { ++ send_silence = TRUE; ++ } ++ ++ if (send_silence) { ++ GST_LOG_OBJECT (dtmfsrc, "Generating silence"); ++ gst_dtmf_src_generate_silence (buf, dtmfsrc->interval, ++ dtmfsrc->sample_rate); ++ } else { ++ GST_LOG_OBJECT (dtmfsrc, "Generating tone"); ++ gst_dtmf_src_generate_tone (event, DTMF_KEYS[event->event_number], ++ dtmfsrc->interval, buf, dtmfsrc->sample_rate); ++ } ++ event->packet_count++; ++ ++ ++ /* timestamp and duration of GstBuffer */ ++ GST_BUFFER_DURATION (buf) = dtmfsrc->interval * GST_MSECOND; ++ GST_BUFFER_TIMESTAMP (buf) = dtmfsrc->timestamp; ++ dtmfsrc->timestamp += GST_BUFFER_DURATION (buf); ++ ++ /* Set caps on the buffer before pushing it */ ++ gst_buffer_set_caps (buf, GST_PAD_CAPS (srcpad)); ++ ++ return buf; ++} ++ ++static GstFlowReturn ++gst_dtmf_src_create (GstBaseSrc * basesrc, guint64 offset, ++ guint length, GstBuffer ** buffer) ++{ ++ GstBuffer *buf = NULL; ++ GstDTMFSrcEvent *event; ++ GstDTMFSrc *dtmfsrc; ++ GstClock *clock; ++ GstClockID *clockid; ++ GstClockReturn clockret; ++ ++ dtmfsrc = GST_DTMF_SRC (basesrc); ++ ++ do { ++ ++ if (dtmfsrc->last_event == NULL) { ++ GST_DEBUG_OBJECT (dtmfsrc, "popping"); ++ event = g_async_queue_pop (dtmfsrc->event_queue); ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "popped %d", event->event_type); ++ ++ switch (event->event_type) { ++ case DTMF_EVENT_TYPE_STOP: ++ GST_WARNING_OBJECT (dtmfsrc, ++ "Received a DTMF stop event when already stopped"); ++ break; ++ case DTMF_EVENT_TYPE_START: ++ gst_dtmf_prepare_timestamps (dtmfsrc); ++ ++ /* Don't forget to get exclusive access to the stream */ ++ gst_dtmf_src_set_stream_lock (dtmfsrc, TRUE); ++ ++ event->packet_count = 0; ++ dtmfsrc->last_event = event; ++ event = NULL; ++ break; ++ case DTMF_EVENT_TYPE_PAUSE_TASK: ++ /* ++ * We're pushing it back because it has to stay in there until ++ * the task is really paused (and the queue will then be flushed) ++ */ ++ GST_DEBUG_OBJECT (dtmfsrc, "pushing pause_task..."); ++ GST_OBJECT_LOCK (dtmfsrc); ++ if (dtmfsrc->paused) { ++ g_async_queue_push (dtmfsrc->event_queue, event); ++ goto paused_locked; ++ } ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ break; ++ } ++ if (event) ++ g_slice_free (GstDTMFSrcEvent, event); ++ } else if (dtmfsrc->last_event->packet_count * dtmfsrc->interval >= ++ MIN_DUTY_CYCLE) { ++ event = g_async_queue_try_pop (dtmfsrc->event_queue); ++ ++ if (event != NULL) { ++ ++ switch (event->event_type) { ++ case DTMF_EVENT_TYPE_START: ++ GST_WARNING_OBJECT (dtmfsrc, ++ "Received two consecutive DTMF start events"); ++ break; ++ case DTMF_EVENT_TYPE_STOP: ++ gst_dtmf_src_set_stream_lock (dtmfsrc, FALSE); ++ ++ g_slice_free (GstDTMFSrcEvent, dtmfsrc->last_event); ++ dtmfsrc->last_event = NULL; ++ break; ++ case DTMF_EVENT_TYPE_PAUSE_TASK: ++ /* ++ * We're pushing it back because it has to stay in there until ++ * the task is really paused (and the queue will then be flushed) ++ */ ++ GST_DEBUG_OBJECT (dtmfsrc, "pushing pause_task..."); ++ ++ GST_OBJECT_LOCK (dtmfsrc); ++ if (dtmfsrc->paused) { ++ g_async_queue_push (dtmfsrc->event_queue, event); ++ goto paused_locked; ++ } ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ ++ break; ++ } ++ g_slice_free (GstDTMFSrcEvent, event); ++ } ++ } ++ } while (dtmfsrc->last_event == NULL); ++ ++ GST_LOG_OBJECT (dtmfsrc, "end event check, now wait for the proper time"); ++ ++ clock = gst_element_get_clock (GST_ELEMENT (basesrc)); ++ ++#ifdef MAEMO_BROKEN ++ clockid = gst_clock_new_single_shot_id (clock, dtmfsrc->timestamp); ++#else ++ clockid = gst_clock_new_single_shot_id (clock, dtmfsrc->timestamp + ++ gst_element_get_base_time (GST_ELEMENT (dtmfsrc))); ++#endif ++ gst_object_unref (clock); ++ ++ GST_OBJECT_LOCK (dtmfsrc); ++ if (!dtmfsrc->paused) { ++ dtmfsrc->clockid = clockid; ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ ++ clockret = gst_clock_id_wait (clockid, NULL); ++ ++ GST_OBJECT_LOCK (dtmfsrc); ++ if (dtmfsrc->paused) ++ clockret = GST_CLOCK_UNSCHEDULED; ++ } else { ++ clockret = GST_CLOCK_UNSCHEDULED; ++ } ++ gst_clock_id_unref (clockid); ++ dtmfsrc->clockid = NULL; ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ ++ if (clockret == GST_CLOCK_UNSCHEDULED) { ++ goto paused; ++ } ++ ++ buf = gst_dtmf_src_create_next_tone_packet (dtmfsrc, dtmfsrc->last_event); ++ ++ GST_LOG_OBJECT (dtmfsrc, "Created buffer of size %d", GST_BUFFER_SIZE (buf)); ++ *buffer = buf; ++ ++ return GST_FLOW_OK; ++ ++paused_locked: ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ ++paused: ++ ++ if (dtmfsrc->last_event) { ++ GST_DEBUG_OBJECT (dtmfsrc, "Stopping current event"); ++ /* Don't forget to release the stream lock */ ++ gst_dtmf_src_set_stream_lock (dtmfsrc, FALSE); ++ g_slice_free (GstDTMFSrcEvent, dtmfsrc->last_event); ++ dtmfsrc->last_event = NULL; ++ } ++ ++ return GST_FLOW_WRONG_STATE; ++ ++} ++ ++static gboolean ++gst_dtmf_src_unlock (GstBaseSrc * src) ++{ ++ GstDTMFSrc *dtmfsrc = GST_DTMF_SRC (src); ++ GstDTMFSrcEvent *event = NULL; ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Called unlock"); ++ ++ GST_OBJECT_LOCK (dtmfsrc); ++ dtmfsrc->paused = TRUE; ++ if (dtmfsrc->clockid) { ++ gst_clock_id_unschedule (dtmfsrc->clockid); ++ } ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Pushing the PAUSE_TASK event on unlock request"); ++ event = g_slice_new0 (GstDTMFSrcEvent); ++ event->event_type = DTMF_EVENT_TYPE_PAUSE_TASK; ++ g_async_queue_push (dtmfsrc->event_queue, event); ++ ++ return TRUE; ++} ++ ++ ++static gboolean ++gst_dtmf_src_unlock_stop (GstBaseSrc * src) ++{ ++ GstDTMFSrc *dtmfsrc = GST_DTMF_SRC (src); ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Unlock stopped"); ++ ++ GST_OBJECT_LOCK (dtmfsrc); ++ dtmfsrc->paused = FALSE; ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ ++ return TRUE; ++} ++ ++ ++static gboolean ++gst_dtmf_src_negotiate (GstBaseSrc * basesrc) ++{ ++ GstDTMFSrc *dtmfsrc = GST_DTMF_SRC (basesrc); ++ GstCaps *caps; ++ GstStructure *s; ++ gboolean ret; ++ ++ caps = gst_pad_get_allowed_caps (GST_BASE_SRC_PAD (basesrc)); ++ ++ if (!caps) ++ caps = ++ gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SRC_PAD ++ (basesrc))); ++ ++ if (gst_caps_is_empty (caps)) ++ return FALSE; ++ ++ gst_caps_truncate (caps); ++ s = gst_caps_get_structure (caps, 0); ++ ++ gst_structure_fixate_field_nearest_int (s, "rate", DEFAULT_SAMPLE_RATE); ++ ++ if (!gst_structure_get_int (s, "rate", &dtmfsrc->sample_rate)) { ++ GST_ERROR_OBJECT (dtmfsrc, "Could not get rate"); ++ gst_caps_unref (caps); ++ return FALSE; ++ } ++ ++ ret = gst_pad_set_caps (GST_BASE_SRC_PAD (basesrc), caps); ++ ++ gst_caps_unref (caps); ++ ++ return ret; ++} ++ ++static GstStateChangeReturn ++gst_dtmf_src_change_state (GstElement * element, GstStateChange transition) ++{ ++ GstDTMFSrc *dtmfsrc; ++ GstStateChangeReturn result; ++ gboolean no_preroll = FALSE; ++ GstDTMFSrcEvent *event = NULL; ++ ++ dtmfsrc = GST_DTMF_SRC (element); ++ ++ switch (transition) { ++ case GST_STATE_CHANGE_READY_TO_PAUSED: ++ /* Flushing the event queue */ ++ event = g_async_queue_try_pop (dtmfsrc->event_queue); ++ ++ while (event != NULL) { ++ g_slice_free (GstDTMFSrcEvent, event); ++ event = g_async_queue_try_pop (dtmfsrc->event_queue); ++ } ++ no_preroll = TRUE; ++ break; ++ default: ++ break; ++ } ++ ++ if ((result = ++ GST_ELEMENT_CLASS (parent_class)->change_state (element, ++ transition)) == GST_STATE_CHANGE_FAILURE) ++ goto failure; ++ ++ switch (transition) { ++ case GST_STATE_CHANGE_PLAYING_TO_PAUSED: ++ no_preroll = TRUE; ++ break; ++ case GST_STATE_CHANGE_PAUSED_TO_READY: ++ GST_DEBUG_OBJECT (dtmfsrc, "Flushing event queue"); ++ /* Flushing the event queue */ ++ event = g_async_queue_try_pop (dtmfsrc->event_queue); ++ ++ while (event != NULL) { ++ g_slice_free (GstDTMFSrcEvent, event); ++ event = g_async_queue_try_pop (dtmfsrc->event_queue); ++ } ++ ++ break; ++ default: ++ break; ++ } ++ ++ if (no_preroll && result == GST_STATE_CHANGE_SUCCESS) ++ result = GST_STATE_CHANGE_NO_PREROLL; ++ ++ return result; ++ ++ /* ERRORS */ ++failure: ++ { ++ GST_ERROR_OBJECT (dtmfsrc, "parent failed state change"); ++ return result; ++ } ++} ++ ++gboolean ++gst_dtmf_src_plugin_init (GstPlugin * plugin) ++{ ++ return gst_element_register (plugin, "dtmfsrc", ++ GST_RANK_NONE, GST_TYPE_DTMF_SRC); ++} +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstdtmfsrc.h gst-plugins-good0.10-0.10.23/farsight/dtmf/gstdtmfsrc.h +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstdtmfsrc.h 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/gstdtmfsrc.h 2009-05-21 14:46:27.000000000 -0400 +@@ -0,0 +1,98 @@ ++/* GStreamer DTMF source ++ * ++ * gstdtmfsrc.h: ++ * ++ * Copyright (C) <2007> Collabora. ++ * Contact: Youness Alaoui ++ * Copyright (C) <2007> Nokia Corporation. ++ * Contact: Zeeshan Ali ++ * Copyright (C) <2005> Wim Taymans ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++#ifndef __GST_DTMF_SRC_H__ ++#define __GST_DTMF_SRC_H__ ++ ++#include ++#include ++#include ++ ++G_BEGIN_DECLS ++#define GST_TYPE_DTMF_SRC (gst_dtmf_src_get_type()) ++#define GST_DTMF_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DTMF_SRC,GstDTMFSrc)) ++#define GST_DTMF_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DTMF_SRC,GstDTMFSrcClass)) ++#define GST_DTMF_SRC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_DTMF_SRC, GstDTMFSrcClass)) ++#define GST_IS_DTMF_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DTMF_SRC)) ++#define GST_IS_DTMF_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DTMF_SRC)) ++#define GST_DTMF_SRC_CAST(obj) ((GstDTMFSrc *)(obj)) ++typedef struct _GstDTMFSrc GstDTMFSrc; ++typedef struct _GstDTMFSrcClass GstDTMFSrcClass; ++ ++enum _GstDTMFEventType ++{ ++ DTMF_EVENT_TYPE_START, ++ DTMF_EVENT_TYPE_STOP, ++ DTMF_EVENT_TYPE_PAUSE_TASK ++}; ++ ++typedef enum _GstDTMFEventType GstDTMFEventType; ++ ++struct _GstDTMFSrcEvent ++{ ++ GstDTMFEventType event_type; ++ double sample; ++ guint16 event_number; ++ guint16 volume; ++ guint32 packet_count; ++}; ++ ++typedef struct _GstDTMFSrcEvent GstDTMFSrcEvent; ++ ++/** ++ * GstDTMFSrc: ++ * @element: the parent element. ++ * ++ * The opaque #GstDTMFSrc data structure. ++ */ ++struct _GstDTMFSrc ++{ ++ /*< private >*/ ++ GstBaseSrc parent; ++ GAsyncQueue *event_queue; ++ GstDTMFSrcEvent *last_event; ++ ++ guint16 interval; ++ GstClockTime timestamp; ++ ++ gboolean paused; ++ GstClockID clockid; ++ ++ gint sample_rate; ++}; ++ ++ ++struct _GstDTMFSrcClass ++{ ++ GstBaseSrcClass parent_class; ++}; ++ ++GType gst_dtmf_src_get_type (void); ++ ++gboolean gst_dtmf_src_plugin_init (GstPlugin * plugin); ++ ++G_END_DECLS ++#endif /* __GST_DTMF_SRC_H__ */ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstrtpdtmfcommon.h gst-plugins-good0.10-0.10.23/farsight/dtmf/gstrtpdtmfcommon.h +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstrtpdtmfcommon.h 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/gstrtpdtmfcommon.h 2009-05-21 14:46:27.000000000 -0400 +@@ -0,0 +1,23 @@ ++ ++#ifndef __GST_RTP_DTMF_COMMON_H__ ++#define __GST_RTP_DTMF_COMMON_H__ ++ ++ ++typedef struct ++{ ++ unsigned event:8; /* Current DTMF event */ ++#if G_BYTE_ORDER == G_LITTLE_ENDIAN ++ unsigned volume:6; /* power level of the tone, in dBm0 */ ++ unsigned r:1; /* Reserved-bit */ ++ unsigned e:1; /* End-bit */ ++#elif G_BYTE_ORDER == G_BIG_ENDIAN ++ unsigned e:1; /* End-bit */ ++ unsigned r:1; /* Reserved-bit */ ++ unsigned volume:6; /* power level of the tone, in dBm0 */ ++#else ++#error "G_BYTE_ORDER should be big or little endian." ++#endif ++ unsigned duration:16; /* Duration of digit, in timestamp units */ ++} GstRTPDTMFPayload; ++ ++#endif /* __GST_RTP_DTMF_COMMON_H__ */ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstrtpdtmfdepay.c gst-plugins-good0.10-0.10.23/farsight/dtmf/gstrtpdtmfdepay.c +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstrtpdtmfdepay.c 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/gstrtpdtmfdepay.c 2009-10-13 12:00:25.000000000 -0400 +@@ -0,0 +1,555 @@ ++/* GstRtpDtmfDepay ++ * ++ * Copyright (C) 2008 Collabora Limited ++ * Copyright (C) 2008 Nokia Corporation ++ * Contact: Youness Alaoui ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++/** ++ * SECTION:element-rtpdtmfdepay ++ * @see_also: rtpdtmfsrc, rtpdtmfmux ++ * ++ * This element takes RTP DTMF packets and produces sound. It also emits a ++ * message on the #GstBus. ++ * ++ * The message is called "dtmf-event" and has the following fields ++ * ++ * ++ * ++ * ++ * ++ * ++ * ++ * ++ * Name ++ * GType ++ * Possible values ++ * Purpose ++ * ++ * ++ * ++ * ++ * ++ * G_TYPE_INT ++ * 0-1 ++ * Which of the two methods ++ * specified in RFC 2833 to use. The value should be 0 for tones and 1 for ++ * named events. Tones are specified by their frequencies and events are specied ++ * by their number. This element currently only recognizes events. ++ * Do not confuse with "method" which specified the output. ++ * ++ * ++ * ++ * number ++ * G_TYPE_INT ++ * 0-16 ++ * The event number. ++ * ++ * ++ * volume ++ * G_TYPE_INT ++ * 0-36 ++ * This field describes the power level of the tone, expressed in dBm0 ++ * after dropping the sign. Power levels range from 0 to -63 dBm0. The range of ++ * valid DTMF is from 0 to -36 dBm0. ++ * ++ * ++ * ++ * method ++ * G_TYPE_INT ++ * 1 ++ * This field will always been 1 (ie RTP event) from this element. ++ * ++ * ++ * ++ * ++ * ++ */ ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#include ++#include ++ ++#include ++#include "gstrtpdtmfdepay.h" ++ ++#ifndef M_PI ++# define M_PI 3.14159265358979323846 /* pi */ ++#endif ++ ++ ++#define DEFAULT_PACKET_INTERVAL 50 /* ms */ ++#define MIN_PACKET_INTERVAL 10 /* ms */ ++#define MAX_PACKET_INTERVAL 50 /* ms */ ++#define SAMPLE_RATE 8000 ++#define SAMPLE_SIZE 16 ++#define CHANNELS 1 ++#define MIN_EVENT 0 ++#define MAX_EVENT 16 ++#define MIN_VOLUME 0 ++#define MAX_VOLUME 36 ++#define MIN_INTER_DIGIT_INTERVAL 100 ++#define MIN_PULSE_DURATION 250 ++#define MIN_DUTY_CYCLE (MIN_INTER_DIGIT_INTERVAL + MIN_PULSE_DURATION) ++ ++#define MIN_UNIT_TIME 0 ++#define MAX_UNIT_TIME 1000 ++#define DEFAULT_UNIT_TIME 0 ++ ++#define DEFAULT_MAX_DURATION 0 ++ ++typedef struct st_dtmf_key ++{ ++ char *event_name; ++ int event_encoding; ++ float low_frequency; ++ float high_frequency; ++} DTMF_KEY; ++ ++static const DTMF_KEY DTMF_KEYS[] = { ++ {"DTMF_KEY_EVENT_0", 0, 941, 1336}, ++ {"DTMF_KEY_EVENT_1", 1, 697, 1209}, ++ {"DTMF_KEY_EVENT_2", 2, 697, 1336}, ++ {"DTMF_KEY_EVENT_3", 3, 697, 1477}, ++ {"DTMF_KEY_EVENT_4", 4, 770, 1209}, ++ {"DTMF_KEY_EVENT_5", 5, 770, 1336}, ++ {"DTMF_KEY_EVENT_6", 6, 770, 1477}, ++ {"DTMF_KEY_EVENT_7", 7, 852, 1209}, ++ {"DTMF_KEY_EVENT_8", 8, 852, 1336}, ++ {"DTMF_KEY_EVENT_9", 9, 852, 1477}, ++ {"DTMF_KEY_EVENT_S", 10, 941, 1209}, ++ {"DTMF_KEY_EVENT_P", 11, 941, 1477}, ++ {"DTMF_KEY_EVENT_A", 12, 697, 1633}, ++ {"DTMF_KEY_EVENT_B", 13, 770, 1633}, ++ {"DTMF_KEY_EVENT_C", 14, 852, 1633}, ++ {"DTMF_KEY_EVENT_D", 15, 941, 1633}, ++}; ++ ++#define MAX_DTMF_EVENTS 16 ++ ++enum ++{ ++ DTMF_KEY_EVENT_1 = 1, ++ DTMF_KEY_EVENT_2 = 2, ++ DTMF_KEY_EVENT_3 = 3, ++ DTMF_KEY_EVENT_4 = 4, ++ DTMF_KEY_EVENT_5 = 5, ++ DTMF_KEY_EVENT_6 = 6, ++ DTMF_KEY_EVENT_7 = 7, ++ DTMF_KEY_EVENT_8 = 8, ++ DTMF_KEY_EVENT_9 = 9, ++ DTMF_KEY_EVENT_0 = 0, ++ DTMF_KEY_EVENT_STAR = 10, ++ DTMF_KEY_EVENT_POUND = 11, ++ DTMF_KEY_EVENT_A = 12, ++ DTMF_KEY_EVENT_B = 13, ++ DTMF_KEY_EVENT_C = 14, ++ DTMF_KEY_EVENT_D = 15, ++}; ++ ++/* elementfactory information */ ++static const GstElementDetails gst_rtp_dtmfdepay_details = ++GST_ELEMENT_DETAILS ("RTP DTMF packet depayloader", ++ "Codec/Depayloader/Network", ++ "Generates DTMF Sound from telephone-event RTP packets", ++ "Youness Alaoui "); ++ ++GST_DEBUG_CATEGORY_STATIC (gst_rtp_dtmf_depay_debug); ++#define GST_CAT_DEFAULT gst_rtp_dtmf_depay_debug ++ ++enum ++{ ++ ++ ++ /* FILL ME */ ++ LAST_SIGNAL ++}; ++ ++enum ++{ ++ PROP_0, ++ PROP_UNIT_TIME, ++ PROP_MAX_DURATION ++}; ++ ++enum ++{ ++ ARG_0 ++}; ++ ++static GstStaticPadTemplate gst_rtp_dtmf_depay_src_template = ++GST_STATIC_PAD_TEMPLATE ("src", ++ GST_PAD_SRC, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS ("audio/x-raw-int, " ++ "width = (int) 16, " ++ "depth = (int) 16, " ++ "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", " ++ "signed = (boolean) true, " ++ "rate = (int) [0, MAX], " "channels = (int) 1") ++ ); ++ ++static GstStaticPadTemplate gst_rtp_dtmf_depay_sink_template = ++GST_STATIC_PAD_TEMPLATE ("sink", ++ GST_PAD_SINK, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS ("application/x-rtp, " ++ "media = (string) \"audio\", " ++ "payload = (int) " GST_RTP_PAYLOAD_DYNAMIC_STRING ", " ++ "clock-rate = (int) [ 0, MAX ], " ++ "encoding-name = (string) \"TELEPHONE-EVENT\"") ++ ); ++ ++GST_BOILERPLATE (GstRtpDTMFDepay, gst_rtp_dtmf_depay, GstBaseRTPDepayload, ++ GST_TYPE_BASE_RTP_DEPAYLOAD); ++ ++static void gst_rtp_dtmf_depay_set_property (GObject * object, guint prop_id, ++ const GValue * value, GParamSpec * pspec); ++static void gst_rtp_dtmf_depay_get_property (GObject * object, guint prop_id, ++ GValue * value, GParamSpec * pspec); ++static GstBuffer *gst_rtp_dtmf_depay_process (GstBaseRTPDepayload * depayload, ++ GstBuffer * buf); ++gboolean gst_rtp_dtmf_depay_setcaps (GstBaseRTPDepayload * filter, ++ GstCaps * caps); ++ ++static void ++gst_rtp_dtmf_depay_base_init (gpointer klass) ++{ ++ GstElementClass *element_class = GST_ELEMENT_CLASS (klass); ++ ++ gst_element_class_add_pad_template (element_class, ++ gst_static_pad_template_get (&gst_rtp_dtmf_depay_src_template)); ++ gst_element_class_add_pad_template (element_class, ++ gst_static_pad_template_get (&gst_rtp_dtmf_depay_sink_template)); ++ ++ ++ GST_DEBUG_CATEGORY_INIT (gst_rtp_dtmf_depay_debug, ++ "rtpdtmfdepay", 0, "rtpdtmfdepay element"); ++ gst_element_class_set_details (element_class, &gst_rtp_dtmfdepay_details); ++} ++ ++static void ++gst_rtp_dtmf_depay_class_init (GstRtpDTMFDepayClass * klass) ++{ ++ GObjectClass *gobject_class; ++ GstElementClass *gstelement_class; ++ GstBaseRTPDepayloadClass *gstbasertpdepayload_class; ++ ++ gobject_class = (GObjectClass *) klass; ++ gstelement_class = (GstElementClass *) klass; ++ gstbasertpdepayload_class = (GstBaseRTPDepayloadClass *) klass; ++ ++ parent_class = g_type_class_peek_parent (klass); ++ ++ gobject_class->set_property = ++ GST_DEBUG_FUNCPTR (gst_rtp_dtmf_depay_set_property); ++ gobject_class->get_property = ++ GST_DEBUG_FUNCPTR (gst_rtp_dtmf_depay_get_property); ++ ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_UNIT_TIME, ++ g_param_spec_uint ("unit-time", "Duration unittime", ++ "The smallest unit (ms) the duration must be a multiple of (0 disables it)", ++ MIN_UNIT_TIME, MAX_UNIT_TIME, DEFAULT_UNIT_TIME, G_PARAM_READWRITE)); ++ ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_MAX_DURATION, ++ g_param_spec_uint ("max-duration", "Maximum duration", ++ "The maxumimum duration (ms) of the outgoing soundpacket. " ++ "(0 = no limit)", 0, G_MAXUINT, DEFAULT_MAX_DURATION, ++ G_PARAM_READWRITE)); ++ ++ gstbasertpdepayload_class->process = ++ GST_DEBUG_FUNCPTR (gst_rtp_dtmf_depay_process); ++ gstbasertpdepayload_class->set_caps = ++ GST_DEBUG_FUNCPTR (gst_rtp_dtmf_depay_setcaps); ++ ++} ++ ++static void ++gst_rtp_dtmf_depay_init (GstRtpDTMFDepay * rtpdtmfdepay, ++ GstRtpDTMFDepayClass * klass) ++{ ++ rtpdtmfdepay->unit_time = DEFAULT_UNIT_TIME; ++} ++ ++static void ++gst_rtp_dtmf_depay_set_property (GObject * object, guint prop_id, ++ const GValue * value, GParamSpec * pspec) ++{ ++ GstRtpDTMFDepay *rtpdtmfdepay; ++ ++ rtpdtmfdepay = GST_RTP_DTMF_DEPAY (object); ++ ++ switch (prop_id) { ++ case PROP_UNIT_TIME: ++ rtpdtmfdepay->unit_time = g_value_get_uint (value); ++ break; ++ case PROP_MAX_DURATION: ++ rtpdtmfdepay->max_duration = g_value_get_uint (value); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++static void ++gst_rtp_dtmf_depay_get_property (GObject * object, guint prop_id, ++ GValue * value, GParamSpec * pspec) ++{ ++ GstRtpDTMFDepay *rtpdtmfdepay; ++ ++ rtpdtmfdepay = GST_RTP_DTMF_DEPAY (object); ++ ++ switch (prop_id) { ++ case PROP_UNIT_TIME: ++ g_value_set_uint (value, rtpdtmfdepay->unit_time); ++ break; ++ case PROP_MAX_DURATION: ++ g_value_set_uint (value, rtpdtmfdepay->max_duration); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++gboolean ++gst_rtp_dtmf_depay_setcaps (GstBaseRTPDepayload * filter, GstCaps * caps) ++{ ++ GstCaps *srccaps; ++ GstStructure *structure = gst_caps_get_structure (caps, 0); ++ gint clock_rate = 8000; /* default */ ++ ++ gst_structure_get_int (structure, "clock-rate", &clock_rate); ++ filter->clock_rate = clock_rate; ++ ++ srccaps = gst_caps_new_simple ("audio/x-raw-int", ++ "width", G_TYPE_INT, 16, ++ "depth", G_TYPE_INT, 16, ++ "endianness", G_TYPE_INT, G_BYTE_ORDER, ++ "signed", G_TYPE_BOOLEAN, TRUE, ++ "channels", G_TYPE_INT, 1, "rate", G_TYPE_INT, clock_rate, NULL); ++ gst_pad_set_caps (GST_BASE_RTP_DEPAYLOAD_SRCPAD (filter), srccaps); ++ gst_caps_unref (srccaps); ++ ++ return TRUE; ++} ++ ++static void ++gst_dtmf_src_generate_tone (GstRtpDTMFDepay * rtpdtmfdepay, ++ GstRTPDTMFPayload payload, GstBuffer * buffer) ++{ ++ gint16 *p; ++ gint tone_size; ++ double i = 0; ++ double amplitude, f1, f2; ++ double volume_factor; ++ DTMF_KEY key = DTMF_KEYS[payload.event]; ++ guint32 clock_rate = 8000 /* default */ ; ++ GstBaseRTPDepayload *depayload = GST_BASE_RTP_DEPAYLOAD (rtpdtmfdepay); ++ gint volume; ++ ++ clock_rate = depayload->clock_rate; ++ ++ /* Create a buffer for the tone */ ++ tone_size = (payload.duration * SAMPLE_SIZE * CHANNELS) / 8; ++ GST_BUFFER_SIZE (buffer) = tone_size; ++ GST_BUFFER_MALLOCDATA (buffer) = g_malloc (tone_size); ++ GST_BUFFER_DATA (buffer) = GST_BUFFER_MALLOCDATA (buffer); ++ GST_BUFFER_DURATION (buffer) = payload.duration * GST_SECOND / clock_rate; ++ volume = payload.volume; ++ ++ p = (gint16 *) GST_BUFFER_MALLOCDATA (buffer); ++ ++ volume_factor = pow (10, (-volume) / 20); ++ ++ /* ++ * For each sample point we calculate 'x' as the ++ * the amplitude value. ++ */ ++ for (i = 0; i < (tone_size / (SAMPLE_SIZE / 8)); i++) { ++ /* ++ * We add the fundamental frequencies together. ++ */ ++ f1 = sin (2 * M_PI * key.low_frequency * (rtpdtmfdepay->sample / ++ clock_rate)); ++ f2 = sin (2 * M_PI * key.high_frequency * (rtpdtmfdepay->sample / ++ clock_rate)); ++ ++ amplitude = (f1 + f2) / 2; ++ ++ /* Adjust the volume */ ++ amplitude *= volume_factor; ++ ++ /* Make the [-1:1] interval into a [-32767:32767] interval */ ++ amplitude *= 32767; ++ ++ /* Store it in the data buffer */ ++ *(p++) = (gint16) amplitude; ++ ++ (rtpdtmfdepay->sample)++; ++ } ++} ++ ++ ++static GstBuffer * ++gst_rtp_dtmf_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf) ++{ ++ ++ GstRtpDTMFDepay *rtpdtmfdepay = NULL; ++ GstBuffer *outbuf = NULL; ++ gint payload_len; ++ guint8 *payload = NULL; ++ guint32 timestamp; ++ GstRTPDTMFPayload dtmf_payload; ++ gboolean marker; ++ GstStructure *structure = NULL; ++ GstMessage *dtmf_message = NULL; ++ ++ rtpdtmfdepay = GST_RTP_DTMF_DEPAY (depayload); ++ ++ if (!gst_rtp_buffer_validate (buf)) ++ goto bad_packet; ++ ++ payload_len = gst_rtp_buffer_get_payload_len (buf); ++ payload = gst_rtp_buffer_get_payload (buf); ++ ++ if (payload_len != sizeof (GstRTPDTMFPayload)) ++ goto bad_packet; ++ ++ memcpy (&dtmf_payload, payload, sizeof (GstRTPDTMFPayload)); ++ ++ if (dtmf_payload.event > MAX_EVENT) ++ goto bad_packet; ++ ++ ++ marker = gst_rtp_buffer_get_marker (buf); ++ ++ timestamp = gst_rtp_buffer_get_timestamp (buf); ++ ++ dtmf_payload.duration = g_ntohs (dtmf_payload.duration); ++ ++ /* clip to whole units of unit_time */ ++ if (rtpdtmfdepay->unit_time) { ++ guint unit_time_clock = ++ (rtpdtmfdepay->unit_time * depayload->clock_rate) / 1000; ++ if (dtmf_payload.duration % unit_time_clock) { ++ /* Make sure we don't overflow the duration */ ++ if (dtmf_payload.duration < G_MAXUINT16 - unit_time_clock) ++ dtmf_payload.duration += unit_time_clock - ++ (dtmf_payload.duration % unit_time_clock); ++ else ++ dtmf_payload.duration -= dtmf_payload.duration % unit_time_clock; ++ } ++ } ++ ++ /* clip to max duration */ ++ if (rtpdtmfdepay->max_duration) { ++ guint max_duration_clock = ++ (rtpdtmfdepay->max_duration * depayload->clock_rate) / 1000; ++ ++ if (max_duration_clock < G_MAXUINT16 && ++ dtmf_payload.duration > max_duration_clock) ++ dtmf_payload.duration = max_duration_clock; ++ } ++ ++ GST_DEBUG_OBJECT (depayload, "Received new RTP DTMF packet : " ++ "marker=%d - timestamp=%u - event=%d - duration=%d", ++ marker, timestamp, dtmf_payload.event, dtmf_payload.duration); ++ ++ GST_DEBUG_OBJECT (depayload, ++ "Previous information : timestamp=%u - duration=%d", ++ rtpdtmfdepay->previous_ts, rtpdtmfdepay->previous_duration); ++ ++ /* First packet */ ++ if (marker || rtpdtmfdepay->previous_ts != timestamp) { ++ rtpdtmfdepay->sample = 0; ++ rtpdtmfdepay->previous_ts = timestamp; ++ rtpdtmfdepay->previous_duration = dtmf_payload.duration; ++ rtpdtmfdepay->first_gst_ts = GST_BUFFER_TIMESTAMP (buf); ++ ++ structure = gst_structure_new ("dtmf-event", ++ "number", G_TYPE_INT, dtmf_payload.event, ++ "volume", G_TYPE_INT, dtmf_payload.volume, ++ "type", G_TYPE_INT, 1, "method", G_TYPE_INT, 1, NULL); ++ if (structure) { ++ dtmf_message = ++ gst_message_new_element (GST_OBJECT (depayload), structure); ++ if (dtmf_message) { ++ if (!gst_element_post_message (GST_ELEMENT (depayload), dtmf_message)) { ++ GST_ERROR_OBJECT (depayload, ++ "Unable to send dtmf-event message to bus"); ++ } ++ } else { ++ GST_ERROR_OBJECT (depayload, "Unable to create dtmf-event message"); ++ } ++ } else { ++ GST_ERROR_OBJECT (depayload, "Unable to create dtmf-event structure"); ++ } ++ } else { ++ guint16 duration = dtmf_payload.duration; ++ dtmf_payload.duration -= rtpdtmfdepay->previous_duration; ++ /* If late buffer, ignore */ ++ if (duration > rtpdtmfdepay->previous_duration) ++ rtpdtmfdepay->previous_duration = duration; ++ } ++ ++ GST_DEBUG_OBJECT (depayload, "new previous duration : %d - new duration : %d" ++ " - diff : %d - clock rate : %d - timestamp : %" G_GUINT64_FORMAT, ++ rtpdtmfdepay->previous_duration, dtmf_payload.duration, ++ (rtpdtmfdepay->previous_duration - dtmf_payload.duration), ++ depayload->clock_rate, GST_BUFFER_TIMESTAMP (buf)); ++ ++ /* If late or duplicate packet (like the redundant end packet). Ignore */ ++ if (dtmf_payload.duration > 0) { ++ outbuf = gst_buffer_new (); ++ gst_dtmf_src_generate_tone (rtpdtmfdepay, dtmf_payload, outbuf); ++ ++ ++ GST_BUFFER_TIMESTAMP (outbuf) = rtpdtmfdepay->first_gst_ts + ++ (rtpdtmfdepay->previous_duration - dtmf_payload.duration) * ++ GST_SECOND / depayload->clock_rate; ++ GST_BUFFER_OFFSET (outbuf) = ++ (rtpdtmfdepay->previous_duration - dtmf_payload.duration) * ++ GST_SECOND / depayload->clock_rate; ++ GST_BUFFER_OFFSET_END (outbuf) = rtpdtmfdepay->previous_duration * ++ GST_SECOND / depayload->clock_rate; ++ ++ GST_DEBUG_OBJECT (depayload, ++ "timestamp : %" G_GUINT64_FORMAT " - time %" GST_TIME_FORMAT, ++ GST_BUFFER_TIMESTAMP (buf), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf))); ++ ++ } ++ ++ return outbuf; ++ ++ ++bad_packet: ++ GST_ELEMENT_WARNING (rtpdtmfdepay, STREAM, DECODE, ++ ("Packet did not validate"), (NULL)); ++ return NULL; ++} ++ ++gboolean ++gst_rtp_dtmf_depay_plugin_init (GstPlugin * plugin) ++{ ++ return gst_element_register (plugin, "rtpdtmfdepay", ++ GST_RANK_MARGINAL, GST_TYPE_RTP_DTMF_DEPAY); ++} +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstrtpdtmfdepay.h gst-plugins-good0.10-0.10.23/farsight/dtmf/gstrtpdtmfdepay.h +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstrtpdtmfdepay.h 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/gstrtpdtmfdepay.h 2009-05-21 14:46:27.000000000 -0400 +@@ -0,0 +1,66 @@ ++/* GstRtpDtmfDepay ++ * ++ * Copyright (C) 2008 Collabora Limited ++ * Copyright (C) 2008 Nokia Corporation ++ * Contact: Youness Alaoui ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++#ifndef __GST_RTP_DTMF_DEPAY_H__ ++#define __GST_RTP_DTMF_DEPAY_H__ ++ ++#include ++#include ++#include ++ ++#include "gstrtpdtmfcommon.h" ++ ++G_BEGIN_DECLS ++#define GST_TYPE_RTP_DTMF_DEPAY \ ++ (gst_rtp_dtmf_depay_get_type()) ++#define GST_RTP_DTMF_DEPAY(obj) \ ++ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_DTMF_DEPAY,GstRtpDTMFDepay)) ++#define GST_RTP_DTMF_DEPAY_CLASS(klass) \ ++ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_DTMF_DEPAY,GstRtpDTMFDepayClass)) ++#define GST_IS_RTP_DTMF_DEPAY(obj) \ ++ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_DTMF_DEPAY)) ++#define GST_IS_RTP_DTMF_DEPAY_CLASS(klass) \ ++ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_DTMF_DEPAY)) ++typedef struct _GstRtpDTMFDepay GstRtpDTMFDepay; ++typedef struct _GstRtpDTMFDepayClass GstRtpDTMFDepayClass; ++ ++struct _GstRtpDTMFDepay ++{ ++ /*< private >*/ ++ GstBaseRTPDepayload depayload; ++ double sample; ++ guint32 previous_ts; ++ guint16 previous_duration; ++ GstClockTime first_gst_ts; ++ guint unit_time; ++ guint max_duration; ++}; ++ ++struct _GstRtpDTMFDepayClass ++{ ++ GstBaseRTPDepayloadClass parent_class; ++}; ++ ++gboolean gst_rtp_dtmf_depay_plugin_init (GstPlugin * plugin); ++ ++G_END_DECLS ++#endif /* __GST_RTP_DTMF_DEPAY_H__ */ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstrtpdtmfsrc.c gst-plugins-good0.10-0.10.23/farsight/dtmf/gstrtpdtmfsrc.c +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstrtpdtmfsrc.c 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/gstrtpdtmfsrc.c 2009-09-01 07:12:49.000000000 -0400 +@@ -0,0 +1,1099 @@ ++/* GStreamer RTP DTMF source ++ * ++ * gstrtpdtmfsrc.c: ++ * ++ * Copyright (C) <2007> Nokia Corporation. ++ * Contact: Zeeshan Ali ++ * Copyright (C) 1999,2000 Erik Walthinsen ++ * 2000,2005 Wim Taymans ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++/** ++ * SECTION:element-rtpdtmfsrc ++ * @see_also: dtmfsrc, rtpdtmfdepay, rtpdtmfmux ++ * ++ * The RTPDTMFSrc element generates RTP DTMF (RFC 2833) event packets on request ++ * from application. The application communicates the beginning and end of a ++ * DTMF event using custom upstream gstreamer events. To report a DTMF event, an ++ * application must send an event of type GST_EVENT_CUSTOM_UPSTREAM, having a ++ * structure of name "dtmf-event" with fields set according to the following ++ * table: ++ * ++ * ++ * ++ * ++ * ++ * ++ * ++ * ++ * ++ * Name ++ * GType ++ * Possible values ++ * Purpose ++ * ++ * ++ * ++ * ++ * type ++ * G_TYPE_INT ++ * 0-1 ++ * The application uses this field to specify which of the two methods ++ * specified in RFC 2833 to use. The value should be 0 for tones and 1 for ++ * named events. Tones are specified by their frequencies and events are specied ++ * by their number. This element can only take events as input. Do not confuse ++ * with "method" which specified the output. ++ * ++ * ++ * ++ * number ++ * G_TYPE_INT ++ * 0-16 ++ * The event number. ++ * ++ * ++ * volume ++ * G_TYPE_INT ++ * 0-36 ++ * This field describes the power level of the tone, expressed in dBm0 ++ * after dropping the sign. Power levels range from 0 to -63 dBm0. The range of ++ * valid DTMF is from 0 to -36 dBm0. Can be omitted if start is set to FALSE. ++ * ++ * ++ * ++ * start ++ * G_TYPE_BOOLEAN ++ * True or False ++ * Whether the event is starting or ending. ++ * ++ * ++ * method ++ * G_TYPE_INT ++ * 1 ++ * The method used for sending event, this element will react if this ++ * field is absent or 1. ++ * ++ * ++ * ++ * ++ * ++ * ++ * For example, the following code informs the pipeline (and in turn, the ++ * RTPDTMFSrc element inside the pipeline) about the start of an RTP DTMF named ++ * event '1' of volume -25 dBm0: ++ * ++ * ++ * structure = gst_structure_new ("dtmf-event", ++ * "type", G_TYPE_INT, 1, ++ * "number", G_TYPE_INT, 1, ++ * "volume", G_TYPE_INT, 25, ++ * "start", G_TYPE_BOOLEAN, TRUE, NULL); ++ * ++ * event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, structure); ++ * gst_element_send_event (pipeline, event); ++ * ++ * ++ */ ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#include ++#include ++ ++#include ++ ++#include "gstrtpdtmfsrc.h" ++ ++#define GST_RTP_DTMF_TYPE_EVENT 1 ++#define DEFAULT_PACKET_INTERVAL 50 /* ms */ ++#define MIN_PACKET_INTERVAL 10 /* ms */ ++#define MAX_PACKET_INTERVAL 50 /* ms */ ++#define DEFAULT_SSRC -1 ++#define DEFAULT_PT 96 ++#define DEFAULT_TIMESTAMP_OFFSET -1 ++#define DEFAULT_SEQNUM_OFFSET -1 ++#define DEFAULT_CLOCK_RATE 8000 ++#define MIN_EVENT 0 ++#define MAX_EVENT 16 ++#define MIN_EVENT_STRING "0" ++#define MAX_EVENT_STRING "16" ++#define MIN_VOLUME 0 ++#define MAX_VOLUME 36 ++ ++#define MIN_INTER_DIGIT_INTERVAL 50 /* ms */ ++#define MIN_PULSE_DURATION 70 /* ms */ ++ ++#define DEFAULT_PACKET_REDUNDANCY 1 ++#define MIN_PACKET_REDUNDANCY 1 ++#define MAX_PACKET_REDUNDANCY 5 ++ ++/* elementfactory information */ ++static const GstElementDetails gst_rtp_dtmf_src_details = ++GST_ELEMENT_DETAILS ("RTP DTMF packet generator", ++ "Source/Network", ++ "Generates RTP DTMF packets", ++ "Zeeshan Ali "); ++ ++GST_DEBUG_CATEGORY_STATIC (gst_rtp_dtmf_src_debug); ++#define GST_CAT_DEFAULT gst_rtp_dtmf_src_debug ++ ++/* signals and args */ ++enum ++{ ++ /* FILL ME */ ++ LAST_SIGNAL ++}; ++ ++enum ++{ ++ PROP_0, ++ PROP_SSRC, ++ PROP_TIMESTAMP_OFFSET, ++ PROP_SEQNUM_OFFSET, ++ PROP_PT, ++ PROP_CLOCK_RATE, ++ PROP_TIMESTAMP, ++ PROP_SEQNUM, ++ PROP_INTERVAL, ++ PROP_REDUNDANCY ++}; ++ ++static GstStaticPadTemplate gst_rtp_dtmf_src_template = ++GST_STATIC_PAD_TEMPLATE ("src", ++ GST_PAD_SRC, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS ("application/x-rtp, " ++ "media = (string) \"audio\", " ++ "payload = (int) [ 96, 127 ], " ++ "clock-rate = (int) [ 0, MAX ], " ++ "ssrc = (int) [ 0, MAX ], " ++ "encoding-name = (string) \"TELEPHONE-EVENT\"") ++ /* "events = (string) \"0-15\" */ ++ ); ++ ++ ++GST_BOILERPLATE (GstRTPDTMFSrc, gst_rtp_dtmf_src, GstBaseSrc, ++ GST_TYPE_BASE_SRC); ++ ++ ++static void gst_rtp_dtmf_src_base_init (gpointer g_class); ++static void gst_rtp_dtmf_src_class_init (GstRTPDTMFSrcClass * klass); ++static void gst_rtp_dtmf_src_finalize (GObject * object); ++ ++ ++static void gst_rtp_dtmf_src_set_property (GObject * object, guint prop_id, ++ const GValue * value, GParamSpec * pspec); ++static void gst_rtp_dtmf_src_get_property (GObject * object, guint prop_id, ++ GValue * value, GParamSpec * pspec); ++static gboolean gst_rtp_dtmf_src_handle_event (GstBaseSrc * basesrc, ++ GstEvent * event); ++static GstStateChangeReturn gst_rtp_dtmf_src_change_state (GstElement * element, ++ GstStateChange transition); ++static void gst_rtp_dtmf_src_add_start_event (GstRTPDTMFSrc * dtmfsrc, ++ gint event_number, gint event_volume); ++static void gst_rtp_dtmf_src_add_stop_event (GstRTPDTMFSrc * dtmfsrc); ++ ++static gboolean gst_rtp_dtmf_src_unlock (GstBaseSrc * src); ++static gboolean gst_rtp_dtmf_src_unlock_stop (GstBaseSrc * src); ++static GstFlowReturn gst_rtp_dtmf_src_create (GstBaseSrc * basesrc, ++ guint64 offset, guint length, GstBuffer ** buffer); ++static gboolean gst_rtp_dtmf_src_negotiate (GstBaseSrc * basesrc); ++ ++ ++static void ++gst_rtp_dtmf_src_base_init (gpointer g_class) ++{ ++ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); ++ ++ GST_DEBUG_CATEGORY_INIT (gst_rtp_dtmf_src_debug, ++ "rtpdtmfsrc", 0, "rtpdtmfsrc element"); ++ ++ gst_element_class_add_pad_template (element_class, ++ gst_static_pad_template_get (&gst_rtp_dtmf_src_template)); ++ ++ gst_element_class_set_details (element_class, &gst_rtp_dtmf_src_details); ++} ++ ++static void ++gst_rtp_dtmf_src_class_init (GstRTPDTMFSrcClass * klass) ++{ ++ GObjectClass *gobject_class; ++ GstBaseSrcClass *gstbasesrc_class; ++ GstElementClass *gstelement_class; ++ ++ gobject_class = G_OBJECT_CLASS (klass); ++ gstbasesrc_class = GST_BASE_SRC_CLASS (klass); ++ gstelement_class = GST_ELEMENT_CLASS (klass); ++ ++ parent_class = g_type_class_peek_parent (klass); ++ ++ gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_finalize); ++ gobject_class->set_property = ++ GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_set_property); ++ gobject_class->get_property = ++ GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_get_property); ++ ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_TIMESTAMP, ++ g_param_spec_uint ("timestamp", "Timestamp", ++ "The RTP timestamp of the last processed packet", ++ 0, G_MAXUINT, 0, G_PARAM_READABLE)); ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SEQNUM, ++ g_param_spec_uint ("seqnum", "Sequence number", ++ "The RTP sequence number of the last processed packet", ++ 0, G_MAXUINT, 0, G_PARAM_READABLE)); ++ g_object_class_install_property (G_OBJECT_CLASS (klass), ++ PROP_TIMESTAMP_OFFSET, g_param_spec_int ("timestamp-offset", ++ "Timestamp Offset", ++ "Offset to add to all outgoing timestamps (-1 = random)", -1, ++ G_MAXINT, DEFAULT_TIMESTAMP_OFFSET, G_PARAM_READWRITE)); ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SEQNUM_OFFSET, ++ g_param_spec_int ("seqnum-offset", "Sequence number Offset", ++ "Offset to add to all outgoing seqnum (-1 = random)", -1, G_MAXINT, ++ DEFAULT_SEQNUM_OFFSET, G_PARAM_READWRITE)); ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_CLOCK_RATE, ++ g_param_spec_uint ("clock-rate", "clockrate", ++ "The clock-rate at which to generate the dtmf packets", ++ 0, G_MAXUINT, DEFAULT_CLOCK_RATE, G_PARAM_READWRITE)); ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SSRC, ++ g_param_spec_uint ("ssrc", "SSRC", ++ "The SSRC of the packets (-1 == random)", ++ 0, G_MAXUINT, DEFAULT_SSRC, G_PARAM_READWRITE)); ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PT, ++ g_param_spec_uint ("pt", "payload type", ++ "The payload type of the packets", ++ 0, 0x80, DEFAULT_PT, G_PARAM_READWRITE)); ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_INTERVAL, ++ g_param_spec_uint ("interval", "Interval between rtp packets", ++ "Interval in ms between two rtp packets", MIN_PACKET_INTERVAL, ++ MAX_PACKET_INTERVAL, DEFAULT_PACKET_INTERVAL, G_PARAM_READWRITE)); ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_REDUNDANCY, ++ g_param_spec_uint ("packet-redundancy", "Packet Redundancy", ++ "Number of packets to send to indicate start and stop dtmf events", ++ MIN_PACKET_REDUNDANCY, MAX_PACKET_REDUNDANCY, ++ DEFAULT_PACKET_REDUNDANCY, G_PARAM_READWRITE)); ++ ++ gstelement_class->change_state = ++ GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_change_state); ++ ++ gstbasesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_unlock); ++ gstbasesrc_class->unlock_stop = ++ GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_unlock_stop); ++ ++ gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_handle_event); ++ gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_create); ++ gstbasesrc_class->negotiate = GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_negotiate); ++} ++ ++static void ++gst_rtp_dtmf_src_event_free (GstRTPDTMFSrcEvent * event) ++{ ++ if (event) { ++ if (event->payload) ++ g_slice_free (GstRTPDTMFPayload, event->payload); ++ g_slice_free (GstRTPDTMFSrcEvent, event); ++ } ++} ++ ++static void ++gst_rtp_dtmf_src_init (GstRTPDTMFSrc * object, GstRTPDTMFSrcClass * g_class) ++{ ++ gst_base_src_set_format (GST_BASE_SRC (object), GST_FORMAT_TIME); ++ gst_base_src_set_live (GST_BASE_SRC (object), TRUE); ++ ++ object->ssrc = DEFAULT_SSRC; ++ object->seqnum_offset = DEFAULT_SEQNUM_OFFSET; ++ object->ts_offset = DEFAULT_TIMESTAMP_OFFSET; ++ object->pt = DEFAULT_PT; ++ object->clock_rate = DEFAULT_CLOCK_RATE; ++ object->interval = DEFAULT_PACKET_INTERVAL; ++ object->packet_redundancy = DEFAULT_PACKET_REDUNDANCY; ++ ++ object->event_queue = ++ g_async_queue_new_full ((GDestroyNotify) gst_rtp_dtmf_src_event_free); ++ object->payload = NULL; ++ ++ GST_DEBUG_OBJECT (object, "init done"); ++} ++ ++static void ++gst_rtp_dtmf_src_finalize (GObject * object) ++{ ++ GstRTPDTMFSrc *dtmfsrc; ++ ++ dtmfsrc = GST_RTP_DTMF_SRC (object); ++ ++ if (dtmfsrc->event_queue) { ++ g_async_queue_unref (dtmfsrc->event_queue); ++ dtmfsrc->event_queue = NULL; ++ } ++ ++ ++ G_OBJECT_CLASS (parent_class)->finalize (object); ++} ++ ++static gboolean ++gst_rtp_dtmf_src_handle_dtmf_event (GstRTPDTMFSrc * dtmfsrc, ++ const GstStructure * event_structure) ++{ ++ gint event_type; ++ gboolean start; ++ gint method; ++ ++ if (!gst_structure_get_int (event_structure, "type", &event_type) || ++ !gst_structure_get_boolean (event_structure, "start", &start) || ++ event_type != GST_RTP_DTMF_TYPE_EVENT) ++ goto failure; ++ ++ if (gst_structure_get_int (event_structure, "method", &method)) { ++ if (method != 1) { ++ goto failure; ++ } ++ } ++ ++ if (start) { ++ gint event_number; ++ gint event_volume; ++ ++ if (!gst_structure_get_int (event_structure, "number", &event_number) || ++ !gst_structure_get_int (event_structure, "volume", &event_volume)) ++ goto failure; ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Received start event %d with volume %d", ++ event_number, event_volume); ++ gst_rtp_dtmf_src_add_start_event (dtmfsrc, event_number, event_volume); ++ } ++ ++ else { ++ GST_DEBUG_OBJECT (dtmfsrc, "Received stop event"); ++ gst_rtp_dtmf_src_add_stop_event (dtmfsrc); ++ } ++ ++ return TRUE; ++failure: ++ return FALSE; ++} ++ ++static gboolean ++gst_rtp_dtmf_src_handle_custom_upstream (GstRTPDTMFSrc * dtmfsrc, ++ GstEvent * event) ++{ ++ gboolean result = FALSE; ++ gchar *struct_str; ++ const GstStructure *structure; ++ ++ GstState state; ++ GstStateChangeReturn ret; ++ ++ ret = gst_element_get_state (GST_ELEMENT (dtmfsrc), &state, NULL, 0); ++ if (ret != GST_STATE_CHANGE_SUCCESS || state != GST_STATE_PLAYING) { ++ GST_DEBUG_OBJECT (dtmfsrc, "Received event while not in PLAYING state"); ++ goto ret; ++ } ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Received event is of our interest"); ++ structure = gst_event_get_structure (event); ++ struct_str = gst_structure_to_string (structure); ++ GST_DEBUG_OBJECT (dtmfsrc, "Event has structure %s", struct_str); ++ g_free (struct_str); ++ if (structure && gst_structure_has_name (structure, "dtmf-event")) ++ result = gst_rtp_dtmf_src_handle_dtmf_event (dtmfsrc, structure); ++ ++ret: ++ return result; ++} ++ ++static gboolean ++gst_rtp_dtmf_src_handle_event (GstBaseSrc * basesrc, GstEvent * event) ++{ ++ GstRTPDTMFSrc *dtmfsrc; ++ gboolean result = FALSE; ++ ++ dtmfsrc = GST_RTP_DTMF_SRC (basesrc); ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Received an event on the src pad"); ++ if (GST_EVENT_TYPE (event) == GST_EVENT_CUSTOM_UPSTREAM) { ++ result = gst_rtp_dtmf_src_handle_custom_upstream (dtmfsrc, event); ++ } ++ ++ return result; ++} ++ ++static void ++gst_rtp_dtmf_src_set_property (GObject * object, guint prop_id, ++ const GValue * value, GParamSpec * pspec) ++{ ++ GstRTPDTMFSrc *dtmfsrc; ++ ++ dtmfsrc = GST_RTP_DTMF_SRC (object); ++ ++ switch (prop_id) { ++ case PROP_TIMESTAMP_OFFSET: ++ dtmfsrc->ts_offset = g_value_get_int (value); ++ break; ++ case PROP_SEQNUM_OFFSET: ++ dtmfsrc->seqnum_offset = g_value_get_int (value); ++ break; ++ case PROP_CLOCK_RATE: ++ dtmfsrc->clock_rate = g_value_get_uint (value); ++ dtmfsrc->dirty = TRUE; ++ break; ++ case PROP_SSRC: ++ dtmfsrc->ssrc = g_value_get_uint (value); ++ break; ++ case PROP_PT: ++ dtmfsrc->pt = g_value_get_uint (value); ++ dtmfsrc->dirty = TRUE; ++ break; ++ case PROP_INTERVAL: ++ dtmfsrc->interval = g_value_get_uint (value); ++ break; ++ case PROP_REDUNDANCY: ++ dtmfsrc->packet_redundancy = g_value_get_uint (value); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++static void ++gst_rtp_dtmf_src_get_property (GObject * object, guint prop_id, GValue * value, ++ GParamSpec * pspec) ++{ ++ GstRTPDTMFSrc *dtmfsrc; ++ ++ dtmfsrc = GST_RTP_DTMF_SRC (object); ++ ++ switch (prop_id) { ++ case PROP_TIMESTAMP_OFFSET: ++ g_value_set_int (value, dtmfsrc->ts_offset); ++ break; ++ case PROP_SEQNUM_OFFSET: ++ g_value_set_int (value, dtmfsrc->seqnum_offset); ++ break; ++ case PROP_CLOCK_RATE: ++ g_value_set_uint (value, dtmfsrc->clock_rate); ++ break; ++ case PROP_SSRC: ++ g_value_set_uint (value, dtmfsrc->ssrc); ++ break; ++ case PROP_PT: ++ g_value_set_uint (value, dtmfsrc->pt); ++ break; ++ case PROP_TIMESTAMP: ++ g_value_set_uint (value, dtmfsrc->rtp_timestamp); ++ break; ++ case PROP_SEQNUM: ++ g_value_set_uint (value, dtmfsrc->seqnum); ++ break; ++ case PROP_INTERVAL: ++ g_value_set_uint (value, dtmfsrc->interval); ++ break; ++ case PROP_REDUNDANCY: ++ g_value_set_uint (value, dtmfsrc->packet_redundancy); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++static void ++gst_rtp_dtmf_src_set_stream_lock (GstRTPDTMFSrc * dtmfsrc, gboolean lock) ++{ ++ GstEvent *event; ++ GstStructure *structure; ++ ++ structure = gst_structure_new ("stream-lock", ++ "lock", G_TYPE_BOOLEAN, lock, NULL); ++ ++ event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM_OOB, structure); ++ if (!gst_pad_push_event (GST_BASE_SRC_PAD (dtmfsrc), event)) { ++ GST_WARNING_OBJECT (dtmfsrc, "stream-lock event not handled"); ++ } ++ ++} ++ ++static void ++gst_rtp_dtmf_prepare_timestamps (GstRTPDTMFSrc * dtmfsrc) ++{ ++ GstClock *clock; ++ GstClockTime base_time; ++ ++#ifdef MAEMO_BROKEN ++ base_time = 0; ++#else ++ base_time = gst_element_get_base_time (GST_ELEMENT (dtmfsrc)); ++#endif ++ ++ clock = gst_element_get_clock (GST_ELEMENT (dtmfsrc)); ++ if (clock != NULL) { ++ dtmfsrc->timestamp = gst_clock_get_time (clock) ++ + (MIN_INTER_DIGIT_INTERVAL * GST_MSECOND) - base_time; ++ dtmfsrc->start_timestamp = dtmfsrc->timestamp; ++ gst_object_unref (clock); ++ } else { ++ gchar *dtmf_name = gst_element_get_name (dtmfsrc); ++ GST_ERROR_OBJECT (dtmfsrc, "No clock set for element %s", dtmf_name); ++ dtmfsrc->timestamp = GST_CLOCK_TIME_NONE; ++ g_free (dtmf_name); ++ } ++ ++ dtmfsrc->rtp_timestamp = dtmfsrc->ts_base + ++ gst_util_uint64_scale_int (gst_segment_to_running_time (&GST_BASE_SRC ++ (dtmfsrc)->segment, GST_FORMAT_TIME, dtmfsrc->timestamp), ++ dtmfsrc->clock_rate, GST_SECOND); ++} ++ ++ ++static void ++gst_rtp_dtmf_src_add_start_event (GstRTPDTMFSrc * dtmfsrc, gint event_number, ++ gint event_volume) ++{ ++ ++ GstRTPDTMFSrcEvent *event = g_slice_new0 (GstRTPDTMFSrcEvent); ++ event->event_type = RTP_DTMF_EVENT_TYPE_START; ++ ++ event->payload = g_slice_new0 (GstRTPDTMFPayload); ++ event->payload->event = CLAMP (event_number, MIN_EVENT, MAX_EVENT); ++ event->payload->volume = CLAMP (event_volume, MIN_VOLUME, MAX_VOLUME); ++ event->payload->duration = dtmfsrc->interval * dtmfsrc->clock_rate / 1000; ++ ++ g_async_queue_push (dtmfsrc->event_queue, event); ++} ++ ++static void ++gst_rtp_dtmf_src_add_stop_event (GstRTPDTMFSrc * dtmfsrc) ++{ ++ ++ GstRTPDTMFSrcEvent *event = g_slice_new0 (GstRTPDTMFSrcEvent); ++ event->event_type = RTP_DTMF_EVENT_TYPE_STOP; ++ ++ g_async_queue_push (dtmfsrc->event_queue, event); ++} ++ ++ ++static void ++gst_rtp_dtmf_prepare_rtp_headers (GstRTPDTMFSrc * dtmfsrc, GstBuffer * buf) ++{ ++ gst_rtp_buffer_set_ssrc (buf, dtmfsrc->current_ssrc); ++ gst_rtp_buffer_set_payload_type (buf, dtmfsrc->pt); ++ /* Only the very first packet gets a marker */ ++ if (dtmfsrc->first_packet) { ++ gst_rtp_buffer_set_marker (buf, TRUE); ++ } else if (dtmfsrc->last_packet) { ++ dtmfsrc->payload->e = 1; ++ } ++ ++ dtmfsrc->seqnum++; ++ gst_rtp_buffer_set_seq (buf, dtmfsrc->seqnum); ++ ++ /* timestamp of RTP header */ ++ gst_rtp_buffer_set_timestamp (buf, dtmfsrc->rtp_timestamp); ++} ++ ++static void ++gst_rtp_dtmf_prepare_buffer_data (GstRTPDTMFSrc * dtmfsrc, GstBuffer * buf) ++{ ++ GstRTPDTMFPayload *payload; ++ ++ gst_rtp_dtmf_prepare_rtp_headers (dtmfsrc, buf); ++ ++ /* timestamp and duration of GstBuffer */ ++ /* Redundant buffer have no duration ... */ ++ if (dtmfsrc->redundancy_count > 1) ++ GST_BUFFER_DURATION (buf) = 0; ++ else ++ GST_BUFFER_DURATION (buf) = dtmfsrc->interval * GST_MSECOND; ++ GST_BUFFER_TIMESTAMP (buf) = dtmfsrc->timestamp; ++ ++ dtmfsrc->timestamp += GST_BUFFER_DURATION (buf); ++ ++ payload = (GstRTPDTMFPayload *) gst_rtp_buffer_get_payload (buf); ++ ++ /* copy payload and convert to network-byte order */ ++ g_memmove (payload, dtmfsrc->payload, sizeof (GstRTPDTMFPayload)); ++ /* Force the packet duration to a certain minumum ++ * if its the end of the event ++ */ ++ if (payload->e && ++ payload->duration < MIN_PULSE_DURATION * dtmfsrc->clock_rate / 1000) ++ payload->duration = MIN_PULSE_DURATION * dtmfsrc->clock_rate / 1000; ++ ++ payload->duration = g_htons (payload->duration); ++ ++ ++ /* duration of DTMF payloadfor the NEXT packet */ ++ /* not updated for redundant packets */ ++ if (dtmfsrc->redundancy_count == 0) ++ dtmfsrc->payload->duration += ++ dtmfsrc->interval * dtmfsrc->clock_rate / 1000; ++ ++} ++ ++static GstBuffer * ++gst_rtp_dtmf_src_create_next_rtp_packet (GstRTPDTMFSrc * dtmfsrc) ++{ ++ GstBuffer *buf = NULL; ++ ++ /* create buffer to hold the payload */ ++ buf = gst_rtp_buffer_new_allocate (sizeof (GstRTPDTMFPayload), 0, 0); ++ ++ gst_rtp_dtmf_prepare_buffer_data (dtmfsrc, buf); ++ ++ /* Set caps on the buffer before pushing it */ ++ gst_buffer_set_caps (buf, GST_PAD_CAPS (GST_BASE_SRC_PAD (dtmfsrc))); ++ ++ return buf; ++} ++ ++static GstFlowReturn ++gst_rtp_dtmf_src_create (GstBaseSrc * basesrc, guint64 offset, ++ guint length, GstBuffer ** buffer) ++{ ++ GstRTPDTMFSrcEvent *event; ++ GstRTPDTMFSrc *dtmfsrc; ++ GstClock *clock; ++ GstClockID *clockid; ++ GstClockReturn clockret; ++ ++ dtmfsrc = GST_RTP_DTMF_SRC (basesrc); ++ ++ do { ++ ++ if (dtmfsrc->payload == NULL) { ++ GST_DEBUG_OBJECT (dtmfsrc, "popping"); ++ event = g_async_queue_pop (dtmfsrc->event_queue); ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "popped %d", event->event_type); ++ ++ switch (event->event_type) { ++ case RTP_DTMF_EVENT_TYPE_STOP: ++ GST_WARNING_OBJECT (dtmfsrc, ++ "Received a DTMF stop event when already stopped"); ++ break; ++ ++ case RTP_DTMF_EVENT_TYPE_START: ++ dtmfsrc->first_packet = TRUE; ++ dtmfsrc->last_packet = FALSE; ++ /* Set the redundancy on the first packet */ ++ dtmfsrc->redundancy_count = dtmfsrc->packet_redundancy; ++ gst_rtp_dtmf_prepare_timestamps (dtmfsrc); ++ ++ /* Don't forget to get exclusive access to the stream */ ++ gst_rtp_dtmf_src_set_stream_lock (dtmfsrc, TRUE); ++ ++ dtmfsrc->payload = event->payload; ++ event->payload = NULL; ++ break; ++ ++ case RTP_DTMF_EVENT_TYPE_PAUSE_TASK: ++ /* ++ * We're pushing it back because it has to stay in there until ++ * the task is really paused (and the queue will then be flushed ++ */ ++ GST_OBJECT_LOCK (dtmfsrc); ++ if (dtmfsrc->paused) { ++ g_async_queue_push (dtmfsrc->event_queue, event); ++ goto paused_locked; ++ } ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ break; ++ } ++ ++ gst_rtp_dtmf_src_event_free (event); ++ } else if (!dtmfsrc->first_packet && !dtmfsrc->last_packet && ++ (dtmfsrc->timestamp - dtmfsrc->start_timestamp) / GST_MSECOND >= ++ MIN_PULSE_DURATION) { ++ GST_DEBUG_OBJECT (dtmfsrc, "try popping"); ++ event = g_async_queue_try_pop (dtmfsrc->event_queue); ++ ++ ++ if (event != NULL) { ++ GST_DEBUG_OBJECT (dtmfsrc, "try popped %d", event->event_type); ++ ++ switch (event->event_type) { ++ case RTP_DTMF_EVENT_TYPE_START: ++ GST_WARNING_OBJECT (dtmfsrc, ++ "Received two consecutive DTMF start events"); ++ break; ++ ++ case RTP_DTMF_EVENT_TYPE_STOP: ++ dtmfsrc->first_packet = FALSE; ++ dtmfsrc->last_packet = TRUE; ++ /* Set the redundancy on the last packet */ ++ dtmfsrc->redundancy_count = dtmfsrc->packet_redundancy; ++ break; ++ ++ case RTP_DTMF_EVENT_TYPE_PAUSE_TASK: ++ /* ++ * We're pushing it back because it has to stay in there until ++ * the task is really paused (and the queue will then be flushed) ++ */ ++ GST_DEBUG_OBJECT (dtmfsrc, "pushing pause_task..."); ++ GST_OBJECT_LOCK (dtmfsrc); ++ if (dtmfsrc->paused) { ++ g_async_queue_push (dtmfsrc->event_queue, event); ++ goto paused_locked; ++ } ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ break; ++ } ++ gst_rtp_dtmf_src_event_free (event); ++ } ++ } ++ } while (dtmfsrc->payload == NULL); ++ ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Processed events, now lets wait on the clock"); ++ ++ clock = gst_element_get_clock (GST_ELEMENT (basesrc)); ++ ++#ifdef MAEMO_BROKEN ++ clockid = gst_clock_new_single_shot_id (clock, dtmfsrc->timestamp); ++#else ++ clockid = gst_clock_new_single_shot_id (clock, dtmfsrc->timestamp + ++ gst_element_get_base_time (GST_ELEMENT (dtmfsrc))); ++#endif ++ gst_object_unref (clock); ++ ++ GST_OBJECT_LOCK (dtmfsrc); ++ if (!dtmfsrc->paused) { ++ dtmfsrc->clockid = clockid; ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ ++ clockret = gst_clock_id_wait (clockid, NULL); ++ ++ GST_OBJECT_LOCK (dtmfsrc); ++ if (dtmfsrc->paused) ++ clockret = GST_CLOCK_UNSCHEDULED; ++ } else { ++ clockret = GST_CLOCK_UNSCHEDULED; ++ } ++ gst_clock_id_unref (clockid); ++ dtmfsrc->clockid = NULL; ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ ++ if (clockret == GST_CLOCK_UNSCHEDULED) { ++ goto paused; ++ } ++ ++send_last: ++ ++ if (dtmfsrc->dirty) ++ if (!gst_rtp_dtmf_src_negotiate (basesrc)) ++ return GST_FLOW_NOT_NEGOTIATED; ++ ++ /* create buffer to hold the payload */ ++ *buffer = gst_rtp_dtmf_src_create_next_rtp_packet (dtmfsrc); ++ ++ if (dtmfsrc->redundancy_count) ++ dtmfsrc->redundancy_count--; ++ ++ /* Only the very first one has a marker */ ++ dtmfsrc->first_packet = FALSE; ++ ++ /* This is the end of the event */ ++ if (dtmfsrc->last_packet == TRUE && dtmfsrc->redundancy_count == 0) { ++ ++ /* Don't forget to release the stream lock */ ++ gst_rtp_dtmf_src_set_stream_lock (dtmfsrc, FALSE); ++ ++ g_slice_free (GstRTPDTMFPayload, dtmfsrc->payload); ++ dtmfsrc->payload = NULL; ++ ++ dtmfsrc->last_packet = FALSE; ++ } ++ ++ return GST_FLOW_OK; ++ ++paused_locked: ++ ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ ++paused: ++ ++ if (dtmfsrc->payload) { ++ dtmfsrc->first_packet = FALSE; ++ dtmfsrc->last_packet = TRUE; ++ /* Set the redundanc on the last packet */ ++ dtmfsrc->redundancy_count = dtmfsrc->packet_redundancy; ++ goto send_last; ++ } else { ++ return GST_FLOW_WRONG_STATE; ++ } ++} ++ ++ ++static gboolean ++gst_rtp_dtmf_src_negotiate (GstBaseSrc * basesrc) ++{ ++ GstCaps *srccaps, *peercaps; ++ GstRTPDTMFSrc *dtmfsrc = GST_RTP_DTMF_SRC (basesrc); ++ gboolean ret; ++ ++ /* fill in the defaults, there properties cannot be negotiated. */ ++ srccaps = gst_caps_new_simple ("application/x-rtp", ++ "media", G_TYPE_STRING, "audio", ++ "encoding-name", G_TYPE_STRING, "TELEPHONE-EVENT", NULL); ++ ++ /* the peer caps can override some of the defaults */ ++ peercaps = gst_pad_peer_get_caps (GST_BASE_SRC_PAD (basesrc)); ++ if (peercaps == NULL) { ++ /* no peer caps, just add the other properties */ ++ gst_caps_set_simple (srccaps, ++ "payload", G_TYPE_INT, dtmfsrc->pt, ++ "ssrc", G_TYPE_UINT, dtmfsrc->current_ssrc, ++ "clock-base", G_TYPE_UINT, dtmfsrc->ts_base, ++ "clock-rate", G_TYPE_INT, dtmfsrc->clock_rate, ++ "seqnum-base", G_TYPE_UINT, dtmfsrc->seqnum_base, NULL); ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "no peer caps: %" GST_PTR_FORMAT, srccaps); ++ } else { ++ GstCaps *temp; ++ GstStructure *s; ++ const GValue *value; ++ gint pt; ++ gint clock_rate; ++ ++ /* peer provides caps we can use to fixate, intersect. This always returns a ++ * writable caps. */ ++ temp = gst_caps_intersect (srccaps, peercaps); ++ gst_caps_unref (srccaps); ++ gst_caps_unref (peercaps); ++ ++ if (!temp) { ++ GST_DEBUG_OBJECT (dtmfsrc, "Could not get intersection with peer caps"); ++ return FALSE; ++ } ++ ++ if (gst_caps_is_empty (temp)) { ++ GST_DEBUG_OBJECT (dtmfsrc, "Intersection with peer caps is empty"); ++ gst_caps_unref (temp); ++ return FALSE; ++ } ++ ++ /* now fixate, start by taking the first caps */ ++ gst_caps_truncate (temp); ++ srccaps = temp; ++ ++ /* get first structure */ ++ s = gst_caps_get_structure (srccaps, 0); ++ ++ if (gst_structure_get_int (s, "payload", &pt)) { ++ /* use peer pt */ ++ dtmfsrc->pt = pt; ++ GST_LOG_OBJECT (dtmfsrc, "using peer pt %d", pt); ++ } else { ++ if (gst_structure_has_field (s, "payload")) { ++ /* can only fixate if there is a field */ ++ gst_structure_fixate_field_nearest_int (s, "payload", dtmfsrc->pt); ++ gst_structure_get_int (s, "payload", &pt); ++ GST_LOG_OBJECT (dtmfsrc, "using peer pt %d", pt); ++ } else { ++ /* no pt field, use the internal pt */ ++ pt = dtmfsrc->pt; ++ gst_structure_set (s, "payload", G_TYPE_INT, pt, NULL); ++ GST_LOG_OBJECT (dtmfsrc, "using internal pt %d", pt); ++ } ++ } ++ ++ if (gst_structure_get_int (s, "clock-rate", &clock_rate)) { ++ dtmfsrc->clock_rate = clock_rate; ++ GST_LOG_OBJECT (dtmfsrc, "using clock-rate from caps %d", ++ dtmfsrc->clock_rate); ++ } else { ++ GST_LOG_OBJECT (dtmfsrc, "using existing clock-rate %d", ++ dtmfsrc->clock_rate); ++ } ++ gst_structure_set (s, "clock-rate", G_TYPE_INT, dtmfsrc->clock_rate, NULL); ++ ++ ++ if (gst_structure_has_field_typed (s, "ssrc", G_TYPE_UINT)) { ++ value = gst_structure_get_value (s, "ssrc"); ++ dtmfsrc->current_ssrc = g_value_get_uint (value); ++ GST_LOG_OBJECT (dtmfsrc, "using peer ssrc %08x", dtmfsrc->current_ssrc); ++ } else { ++ /* FIXME, fixate_nearest_uint would be even better */ ++ gst_structure_set (s, "ssrc", G_TYPE_UINT, dtmfsrc->current_ssrc, NULL); ++ GST_LOG_OBJECT (dtmfsrc, "using internal ssrc %08x", ++ dtmfsrc->current_ssrc); ++ } ++ ++ if (gst_structure_has_field_typed (s, "clock-base", G_TYPE_UINT)) { ++ value = gst_structure_get_value (s, "clock-base"); ++ dtmfsrc->ts_base = g_value_get_uint (value); ++ GST_LOG_OBJECT (dtmfsrc, "using peer clock-base %u", dtmfsrc->ts_base); ++ } else { ++ /* FIXME, fixate_nearest_uint would be even better */ ++ gst_structure_set (s, "clock-base", G_TYPE_UINT, dtmfsrc->ts_base, NULL); ++ GST_LOG_OBJECT (dtmfsrc, "using internal clock-base %u", ++ dtmfsrc->ts_base); ++ } ++ if (gst_structure_has_field_typed (s, "seqnum-base", G_TYPE_UINT)) { ++ value = gst_structure_get_value (s, "seqnum-base"); ++ dtmfsrc->seqnum_base = g_value_get_uint (value); ++ GST_LOG_OBJECT (dtmfsrc, "using peer seqnum-base %u", ++ dtmfsrc->seqnum_base); ++ } else { ++ /* FIXME, fixate_nearest_uint would be even better */ ++ gst_structure_set (s, "seqnum-base", G_TYPE_UINT, dtmfsrc->seqnum_base, ++ NULL); ++ GST_LOG_OBJECT (dtmfsrc, "using internal seqnum-base %u", ++ dtmfsrc->seqnum_base); ++ } ++ GST_DEBUG_OBJECT (dtmfsrc, "with peer caps: %" GST_PTR_FORMAT, srccaps); ++ } ++ ++ ret = gst_pad_set_caps (GST_BASE_SRC_PAD (basesrc), srccaps); ++ gst_caps_unref (srccaps); ++ ++ dtmfsrc->dirty = FALSE; ++ ++ return ret; ++ ++} ++ ++ ++static void ++gst_rtp_dtmf_src_ready_to_paused (GstRTPDTMFSrc * dtmfsrc) ++{ ++ if (dtmfsrc->ssrc == -1) ++ dtmfsrc->current_ssrc = g_random_int (); ++ else ++ dtmfsrc->current_ssrc = dtmfsrc->ssrc; ++ ++ if (dtmfsrc->seqnum_offset == -1) ++ dtmfsrc->seqnum_base = g_random_int_range (0, G_MAXUINT16); ++ else ++ dtmfsrc->seqnum_base = dtmfsrc->seqnum_offset; ++ dtmfsrc->seqnum = dtmfsrc->seqnum_base; ++ ++ if (dtmfsrc->ts_offset == -1) ++ dtmfsrc->ts_base = g_random_int (); ++ else ++ dtmfsrc->ts_base = dtmfsrc->ts_offset; ++ ++} ++ ++static GstStateChangeReturn ++gst_rtp_dtmf_src_change_state (GstElement * element, GstStateChange transition) ++{ ++ GstRTPDTMFSrc *dtmfsrc; ++ GstStateChangeReturn result; ++ gboolean no_preroll = FALSE; ++ GstRTPDTMFSrcEvent *event = NULL; ++ ++ dtmfsrc = GST_RTP_DTMF_SRC (element); ++ ++ switch (transition) { ++ case GST_STATE_CHANGE_READY_TO_PAUSED: ++ gst_rtp_dtmf_src_ready_to_paused (dtmfsrc); ++ ++ /* Flushing the event queue */ ++ while ((event = g_async_queue_try_pop (dtmfsrc->event_queue)) != NULL) ++ gst_rtp_dtmf_src_event_free (event); ++ ++ no_preroll = TRUE; ++ break; ++ default: ++ break; ++ } ++ ++ if ((result = ++ GST_ELEMENT_CLASS (parent_class)->change_state (element, ++ transition)) == GST_STATE_CHANGE_FAILURE) ++ goto failure; ++ ++ switch (transition) { ++ case GST_STATE_CHANGE_PLAYING_TO_PAUSED: ++ no_preroll = TRUE; ++ break; ++ case GST_STATE_CHANGE_PAUSED_TO_READY: ++ ++ /* Flushing the event queue */ ++ while ((event = g_async_queue_try_pop (dtmfsrc->event_queue)) != NULL) ++ gst_rtp_dtmf_src_event_free (event); ++ ++ /* Indicate that we don't do PRE_ROLL */ ++ break; ++ ++ default: ++ break; ++ } ++ ++ if (no_preroll && result == GST_STATE_CHANGE_SUCCESS) ++ result = GST_STATE_CHANGE_NO_PREROLL; ++ ++ return result; ++ ++ /* ERRORS */ ++failure: ++ { ++ GST_ERROR_OBJECT (dtmfsrc, "parent failed state change"); ++ return result; ++ } ++} ++ ++ ++static gboolean ++gst_rtp_dtmf_src_unlock (GstBaseSrc * src) ++{ ++ GstRTPDTMFSrc *dtmfsrc = GST_RTP_DTMF_SRC (src); ++ GstRTPDTMFSrcEvent *event = NULL; ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Called unlock"); ++ ++ GST_OBJECT_LOCK (dtmfsrc); ++ dtmfsrc->paused = TRUE; ++ if (dtmfsrc->clockid) { ++ gst_clock_id_unschedule (dtmfsrc->clockid); ++ } ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Pushing the PAUSE_TASK event on unlock request"); ++ event = g_slice_new0 (GstRTPDTMFSrcEvent); ++ event->event_type = RTP_DTMF_EVENT_TYPE_PAUSE_TASK; ++ g_async_queue_push (dtmfsrc->event_queue, event); ++ ++ return TRUE; ++} ++ ++ ++static gboolean ++gst_rtp_dtmf_src_unlock_stop (GstBaseSrc * src) ++{ ++ GstRTPDTMFSrc *dtmfsrc = GST_RTP_DTMF_SRC (src); ++ ++ GST_DEBUG_OBJECT (dtmfsrc, "Unlock stopped"); ++ ++ GST_OBJECT_LOCK (dtmfsrc); ++ dtmfsrc->paused = FALSE; ++ GST_OBJECT_UNLOCK (dtmfsrc); ++ ++ return TRUE; ++} ++ ++gboolean ++gst_rtp_dtmf_src_plugin_init (GstPlugin * plugin) ++{ ++ return gst_element_register (plugin, "rtpdtmfsrc", ++ GST_RANK_NONE, GST_TYPE_RTP_DTMF_SRC); ++} +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstrtpdtmfsrc.h gst-plugins-good0.10-0.10.23/farsight/dtmf/gstrtpdtmfsrc.h +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/gstrtpdtmfsrc.h 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/gstrtpdtmfsrc.h 2009-05-21 14:46:27.000000000 -0400 +@@ -0,0 +1,112 @@ ++/* GStreamer RTP DTMF source ++ * ++ * gstrtpdtmfsrc.h: ++ * ++ * Copyright (C) <2007> Nokia Corporation. ++ * Contact: Zeeshan Ali ++ * Copyright (C) <2005> Wim Taymans ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++#ifndef __GST_RTP_DTMF_SRC_H__ ++#define __GST_RTP_DTMF_SRC_H__ ++ ++#include ++#include ++#include ++ ++#include "gstrtpdtmfcommon.h" ++ ++G_BEGIN_DECLS ++#define GST_TYPE_RTP_DTMF_SRC (gst_rtp_dtmf_src_get_type()) ++#define GST_RTP_DTMF_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_DTMF_SRC,GstRTPDTMFSrc)) ++#define GST_RTP_DTMF_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_DTMF_SRC,GstRTPDTMFSrcClass)) ++#define GST_RTP_DTMF_SRC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_RTP_DTMF_SRC, GstRTPDTMFSrcClass)) ++#define GST_IS_RTP_DTMF_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_DTMF_SRC)) ++#define GST_IS_RTP_DTMF_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_DTMF_SRC)) ++#define GST_RTP_DTMF_SRC_CAST(obj) ((GstRTPDTMFSrc *)(obj)) ++typedef struct _GstRTPDTMFSrc GstRTPDTMFSrc; ++typedef struct _GstRTPDTMFSrcClass GstRTPDTMFSrcClass; ++ ++ ++ ++enum _GstRTPDTMFEventType ++{ ++ RTP_DTMF_EVENT_TYPE_START, ++ RTP_DTMF_EVENT_TYPE_STOP, ++ RTP_DTMF_EVENT_TYPE_PAUSE_TASK ++}; ++ ++typedef enum _GstRTPDTMFEventType GstRTPDTMFEventType; ++ ++struct _GstRTPDTMFSrcEvent ++{ ++ GstRTPDTMFEventType event_type; ++ GstRTPDTMFPayload *payload; ++}; ++ ++typedef struct _GstRTPDTMFSrcEvent GstRTPDTMFSrcEvent; ++ ++/** ++ * GstRTPDTMFSrc: ++ * @element: the parent element. ++ * ++ * The opaque #GstRTPDTMFSrc data structure. ++ */ ++struct _GstRTPDTMFSrc ++{ ++ /*< private >*/ ++ GstBaseSrc basesrc; ++ ++ GAsyncQueue *event_queue; ++ GstClockID clockid; ++ gboolean paused; ++ GstRTPDTMFPayload *payload; ++ ++ GstClockTime timestamp; ++ GstClockTime start_timestamp; ++ gboolean first_packet; ++ gboolean last_packet; ++ guint32 ts_base; ++ guint16 seqnum_base; ++ gint16 seqnum_offset; ++ guint16 seqnum; ++ gint32 ts_offset; ++ guint32 rtp_timestamp; ++ guint pt; ++ guint ssrc; ++ guint current_ssrc; ++ guint16 interval; ++ guint16 packet_redundancy; ++ guint32 clock_rate; ++ ++ gboolean dirty; ++ guint16 redundancy_count; ++}; ++ ++struct _GstRTPDTMFSrcClass ++{ ++ GstBaseSrcClass parent_class; ++}; ++ ++GType gst_rtp_dtmf_src_get_type (void); ++ ++gboolean gst_rtp_dtmf_src_plugin_init (GstPlugin * plugin); ++ ++ ++G_END_DECLS ++#endif /* __GST_RTP_DTMF_SRC_H__ */ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/Makefile.am gst-plugins-good0.10-0.10.23/farsight/dtmf/Makefile.am +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/Makefile.am 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/Makefile.am 2009-11-22 14:14:36.000000000 -0500 +@@ -0,0 +1,23 @@ ++plugin_LTLIBRARIES = libgstdtmf.la ++ ++libgstdtmf_la_SOURCES = gstdtmfsrc.c \ ++ gstdtmfdetect.c \ ++ gstrtpdtmfsrc.c \ ++ gstrtpdtmfdepay.c \ ++ tone_detect.c \ ++ gstdtmf.c ++ ++noinst_HEADERS = gstdtmfsrc.h \ ++ gstdtmfdetect.h \ ++ gstrtpdtmfsrc.h \ ++ gstrtpdtmfdepay.h \ ++ gstrtpdtmfcommon.h \ ++ tone_detect.h ++ ++libgstdtmf_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \ ++ -DEXTERN_BUF -DRTP_SUPPORT ++libgstdtmf_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-@GST_MAJORMINOR@ \ ++ $(GST_BASE_LIBS) $(GST_LIBS) $(LIBM) ++libgstdtmf_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) ++libgstdtmf_la_LIBTOOLFLAGS = --tag=disable-static ++ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/Makefile.in gst-plugins-good0.10-0.10.23/farsight/dtmf/Makefile.in +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/Makefile.in 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/Makefile.in 2010-03-05 20:28:36.000000000 -0500 +@@ -0,0 +1,880 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# @configure_input@ ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++@SET_MAKE@ ++ ++ ++VPATH = @srcdir@ ++pkgdatadir = $(datadir)/@PACKAGE@ ++pkgincludedir = $(includedir)/@PACKAGE@ ++pkglibdir = $(libdir)/@PACKAGE@ ++pkglibexecdir = $(libexecdir)/@PACKAGE@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = @build@ ++host_triplet = @host@ ++subdir = gst/dtmf ++DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ ++ $(top_srcdir)/common/m4/as-auto-alt.m4 \ ++ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ ++ $(top_srcdir)/common/m4/as-objc.m4 \ ++ $(top_srcdir)/common/m4/as-python.m4 \ ++ $(top_srcdir)/common/m4/as-scrub-include.m4 \ ++ $(top_srcdir)/common/m4/as-version.m4 \ ++ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ ++ $(top_srcdir)/common/m4/gst-arch.m4 \ ++ $(top_srcdir)/common/m4/gst-args.m4 \ ++ $(top_srcdir)/common/m4/gst-check.m4 \ ++ $(top_srcdir)/common/m4/gst-default.m4 \ ++ $(top_srcdir)/common/m4/gst-dowhile.m4 \ ++ $(top_srcdir)/common/m4/gst-error.m4 \ ++ $(top_srcdir)/common/m4/gst-feature.m4 \ ++ $(top_srcdir)/common/m4/gst-gettext.m4 \ ++ $(top_srcdir)/common/m4/gst-glib2.m4 \ ++ $(top_srcdir)/common/m4/gst-platform.m4 \ ++ $(top_srcdir)/common/m4/gst-plugin-docs.m4 \ ++ $(top_srcdir)/common/m4/gst-plugindir.m4 \ ++ $(top_srcdir)/common/m4/gst-x11.m4 \ ++ $(top_srcdir)/common/m4/gst.m4 \ ++ $(top_srcdir)/common/m4/gtk-doc.m4 \ ++ $(top_srcdir)/common/m4/pkg.m4 \ ++ $(top_srcdir)/common/m4/shave.m4 $(top_srcdir)/m4/gettext.m4 \ ++ $(top_srcdir)/m4/gst-alsa.m4 $(top_srcdir)/m4/gst-fionread.m4 \ ++ $(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \ ++ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ ++ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ ++ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ ++ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ ++ $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(install_sh) -d ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; ++am__install_max = 40 ++am__nobase_strip_setup = \ ++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` ++am__nobase_strip = \ ++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" ++am__nobase_list = $(am__nobase_strip_setup); \ ++ for p in $$list; do echo "$$p $$p"; done | \ ++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ ++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ ++ if (++n[$$2] == $(am__install_max)) \ ++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ ++ END { for (dir in files) print dir, files[dir] }' ++am__base_list = \ ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++am__installdirs = "$(DESTDIR)$(plugindir)" ++LTLIBRARIES = $(plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++libgstdtmf_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) ++am_libgstdtmf_la_OBJECTS = libgstdtmf_la-gstdtmfsrc.lo \ ++ libgstdtmf_la-gstdtmfdetect.lo libgstdtmf_la-gstrtpdtmfsrc.lo \ ++ libgstdtmf_la-gstrtpdtmfdepay.lo libgstdtmf_la-tone_detect.lo \ ++ libgstdtmf_la-gstdtmf.lo ++libgstdtmf_la_OBJECTS = $(am_libgstdtmf_la_OBJECTS) ++libgstdtmf_la_LINK = $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libgstdtmf_la_CFLAGS) \ ++ $(CFLAGS) $(libgstdtmf_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(libgstdtmf_la_SOURCES) ++DIST_SOURCES = $(libgstdtmf_la_SOURCES) ++HEADERS = $(noinst_HEADERS) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ ++ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ++ACMENC_CFLAGS = @ACMENC_CFLAGS@ ++ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@ ++ALSA_CFLAGS = @ALSA_CFLAGS@ ++ALSA_LIBS = @ALSA_LIBS@ ++AMRWB_LIBS = @AMRWB_LIBS@ ++AMTAR = @AMTAR@ ++AM_MAKEFLAGS = @AM_MAKEFLAGS@ ++APEXSINK_CFLAGS = @APEXSINK_CFLAGS@ ++APEXSINK_LIBS = @APEXSINK_LIBS@ ++AR = @AR@ ++AS = @AS@ ++ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@ ++ASSRENDER_LIBS = @ASSRENDER_LIBS@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ ++AWK = @AWK@ ++BZ2_LIBS = @BZ2_LIBS@ ++CC = @CC@ ++CCASFLAGS = @CCASFLAGS@ ++CCDEPMODE = @CCDEPMODE@ ++CDAUDIO_CFLAGS = @CDAUDIO_CFLAGS@ ++CDAUDIO_CONFIG = @CDAUDIO_CONFIG@ ++CDAUDIO_LIBS = @CDAUDIO_LIBS@ ++CELT_0_5_CFLAGS = @CELT_0_5_CFLAGS@ ++CELT_0_5_LIBS = @CELT_0_5_LIBS@ ++CELT_0_7_CFLAGS = @CELT_0_7_CFLAGS@ ++CELT_0_7_LIBS = @CELT_0_7_LIBS@ ++CELT_CFLAGS = @CELT_CFLAGS@ ++CELT_LIBS = @CELT_LIBS@ ++CFLAGS = @CFLAGS@ ++COG_CFLAGS = @COG_CFLAGS@ ++COG_LIBS = @COG_LIBS@ ++CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ ++CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DCCP_LIBS = @DCCP_LIBS@ ++DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@ ++DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@ ++DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@ ++DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@ ++DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@ ++DEFS = @DEFS@ ++DEPDIR = @DEPDIR@ ++DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@ ++DIRAC_CFLAGS = @DIRAC_CFLAGS@ ++DIRAC_LIBS = @DIRAC_LIBS@ ++DIRECTDRAW_LIBS = @DIRECTDRAW_LIBS@ ++DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ ++DIRECTFB_LIBS = @DIRECTFB_LIBS@ ++DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@ ++DIRECTX_CFLAGS = @DIRECTX_CFLAGS@ ++DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@ ++DIVXDEC_LIBS = @DIVXDEC_LIBS@ ++DIVXENC_LIBS = @DIVXENC_LIBS@ ++DLLTOOL = @DLLTOOL@ ++DSYMUTIL = @DSYMUTIL@ ++DTS_LIBS = @DTS_LIBS@ ++DUMPBIN = @DUMPBIN@ ++DVDNAV_CFLAGS = @DVDNAV_CFLAGS@ ++DVDNAV_CONFIG = @DVDNAV_CONFIG@ ++DVDNAV_LIBS = @DVDNAV_LIBS@ ++ECHO_C = @ECHO_C@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ ++ERROR_CFLAGS = @ERROR_CFLAGS@ ++ERROR_CXXFLAGS = @ERROR_CXXFLAGS@ ++EXEEXT = @EXEEXT@ ++EXIF_CFLAGS = @EXIF_CFLAGS@ ++EXIF_LIBS = @EXIF_LIBS@ ++F77 = @F77@ ++FAAC_LIBS = @FAAC_LIBS@ ++FAAD_IS_NEAAC = @FAAD_IS_NEAAC@ ++FAAD_LIBS = @FAAD_LIBS@ ++FC = @FC@ ++FFLAGS = @FFLAGS@ ++FGREP = @FGREP@ ++FLITE_CFLAGS = @FLITE_CFLAGS@ ++FLITE_LIBS = @FLITE_LIBS@ ++GCOV = @GCOV@ ++GCOV_CFLAGS = @GCOV_CFLAGS@ ++GCOV_LIBS = @GCOV_LIBS@ ++GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ ++GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ ++GIO_CFLAGS = @GIO_CFLAGS@ ++GIO_LIBS = @GIO_LIBS@ ++GLIB_CFLAGS = @GLIB_CFLAGS@ ++GLIB_LIBS = @GLIB_LIBS@ ++GLIB_PREFIX = @GLIB_PREFIX@ ++GLIB_REQ = @GLIB_REQ@ ++GME_LIBS = @GME_LIBS@ ++GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@ ++GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@ ++GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GMYTH_CFLAGS = @GMYTH_CFLAGS@ ++GMYTH_LIBS = @GMYTH_LIBS@ ++GREP = @GREP@ ++GSM_LIBS = @GSM_LIBS@ ++GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@ ++GSTPB_PREFIX = @GSTPB_PREFIX@ ++GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@ ++GST_BASE_CFLAGS = @GST_BASE_CFLAGS@ ++GST_BASE_LIBS = @GST_BASE_LIBS@ ++GST_CFLAGS = @GST_CFLAGS@ ++GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@ ++GST_CHECK_LIBS = @GST_CHECK_LIBS@ ++GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@ ++GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@ ++GST_CXXFLAGS = @GST_CXXFLAGS@ ++GST_GDP_CFLAGS = @GST_GDP_CFLAGS@ ++GST_GDP_LIBS = @GST_GDP_LIBS@ ++GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@ ++GST_LIBS = @GST_LIBS@ ++GST_LICENSE = @GST_LICENSE@ ++GST_MAJORMINOR = @GST_MAJORMINOR@ ++GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@ ++GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@ ++GST_PACKAGE_NAME = @GST_PACKAGE_NAME@ ++GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@ ++GST_PLUGINS_ALL = @GST_PLUGINS_ALL@ ++GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@ ++GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@ ++GST_PLUGINS_DIR = @GST_PLUGINS_DIR@ ++GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@ ++GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@ ++GST_PREFIX = @GST_PREFIX@ ++GST_TOOLS_DIR = @GST_TOOLS_DIR@ ++GTKDOC_CHECK = @GTKDOC_CHECK@ ++GTK_CFLAGS = @GTK_CFLAGS@ ++GTK_LIBS = @GTK_LIBS@ ++HAVE_AMRWB = @HAVE_AMRWB@ ++HAVE_BZ2 = @HAVE_BZ2@ ++HAVE_CXX = @HAVE_CXX@ ++HAVE_DIRECTDRAW = @HAVE_DIRECTDRAW@ ++HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@ ++HAVE_DTS = @HAVE_DTS@ ++HAVE_FAAC = @HAVE_FAAC@ ++HAVE_FAAD = @HAVE_FAAD@ ++HAVE_FLITE = @HAVE_FLITE@ ++HAVE_GSM = @HAVE_GSM@ ++HAVE_JP2K = @HAVE_JP2K@ ++HAVE_NAS = @HAVE_NAS@ ++HAVE_X = @HAVE_X@ ++HAVE_X11 = @HAVE_X11@ ++HTML_DIR = @HTML_DIR@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++INTLLIBS = @INTLLIBS@ ++INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ ++IPTC_CFLAGS = @IPTC_CFLAGS@ ++IPTC_LIBS = @IPTC_LIBS@ ++JACK_CFLAGS = @JACK_CFLAGS@ ++JACK_LIBS = @JACK_LIBS@ ++JP2K_LIBS = @JP2K_LIBS@ ++KATE_CFLAGS = @KATE_CFLAGS@ ++KATE_LIBS = @KATE_LIBS@ ++LD = @LD@ ++LDFLAGS = @LDFLAGS@ ++LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@ ++LIBDC1394_LIBS = @LIBDC1394_LIBS@ ++LIBDIR = @LIBDIR@ ++LIBICONV = @LIBICONV@ ++LIBINTL = @LIBINTL@ ++LIBM = @LIBM@ ++LIBMMS_CFLAGS = @LIBMMS_CFLAGS@ ++LIBMMS_LIBS = @LIBMMS_LIBS@ ++LIBOBJS = @LIBOBJS@ ++LIBOIL_CFLAGS = @LIBOIL_CFLAGS@ ++LIBOIL_LIBS = @LIBOIL_LIBS@ ++LIBS = @LIBS@ ++LIBTOOL = @LIBTOOL@ ++LIPO = @LIPO@ ++LN_S = @LN_S@ ++LOCALEDIR = @LOCALEDIR@ ++LRDF_CFLAGS = @LRDF_CFLAGS@ ++LRDF_LIBS = @LRDF_LIBS@ ++LTLIBICONV = @LTLIBICONV@ ++LTLIBINTL = @LTLIBINTL@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAINT = @MAINT@ ++MAKEFLAGS = @MAKEFLAGS@ ++MAKEINFO = @MAKEINFO@ ++METADATA_CFLAGS = @METADATA_CFLAGS@ ++METADATA_LIBS = @METADATA_LIBS@ ++MIMIC_CFLAGS = @MIMIC_CFLAGS@ ++MIMIC_LIBS = @MIMIC_LIBS@ ++MJPEG_CFLAGS = @MJPEG_CFLAGS@ ++MJPEG_LIBS = @MJPEG_LIBS@ ++MKDIR_P = @MKDIR_P@ ++MODPLUG_CFLAGS = @MODPLUG_CFLAGS@ ++MODPLUG_LIBS = @MODPLUG_LIBS@ ++MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@ ++MPEG2ENC_LIBS = @MPEG2ENC_LIBS@ ++MPLEX_CFLAGS = @MPLEX_CFLAGS@ ++MPLEX_LIBS = @MPLEX_LIBS@ ++MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ ++MSGMERGE = @MSGMERGE@ ++MUSEPACK_LIBS = @MUSEPACK_LIBS@ ++MUSICBRAINZ_CFLAGS = @MUSICBRAINZ_CFLAGS@ ++MUSICBRAINZ_LIBS = @MUSICBRAINZ_LIBS@ ++NAS_CFLAGS = @NAS_CFLAGS@ ++NAS_LIBS = @NAS_LIBS@ ++NEON_CFLAGS = @NEON_CFLAGS@ ++NEON_LIBS = @NEON_LIBS@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ ++OBJC = @OBJC@ ++OBJCDEPMODE = @OBJCDEPMODE@ ++OBJC_LDFLAGS = @OBJC_LDFLAGS@ ++OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ ++OFA_CFLAGS = @OFA_CFLAGS@ ++OFA_LIBS = @OFA_LIBS@ ++ORCC = @ORCC@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ ++PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ ++PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ ++PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ ++PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@ ++PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ ++PKG_CONFIG = @PKG_CONFIG@ ++PLUGINDIR = @PLUGINDIR@ ++POSUB = @POSUB@ ++PROFILE_CFLAGS = @PROFILE_CFLAGS@ ++PYTHON = @PYTHON@ ++PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ ++PYTHON_PLATFORM = @PYTHON_PLATFORM@ ++PYTHON_PREFIX = @PYTHON_PREFIX@ ++PYTHON_VERSION = @PYTHON_VERSION@ ++Q = @Q@ ++RANLIB = @RANLIB@ ++RSVG_CFLAGS = @RSVG_CFLAGS@ ++RSVG_LIBS = @RSVG_LIBS@ ++SCHRO_CFLAGS = @SCHRO_CFLAGS@ ++SCHRO_LIBS = @SCHRO_LIBS@ ++SDL_CFLAGS = @SDL_CFLAGS@ ++SDL_CONFIG = @SDL_CONFIG@ ++SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ ++SLV2_CFLAGS = @SLV2_CFLAGS@ ++SLV2_LIBS = @SLV2_LIBS@ ++SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ ++SNDFILE_LIBS = @SNDFILE_LIBS@ ++SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@ ++SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@ ++SPC_LIBS = @SPC_LIBS@ ++STRIP = @STRIP@ ++SWFDEC_CFLAGS = @SWFDEC_CFLAGS@ ++SWFDEC_LIBS = @SWFDEC_LIBS@ ++THEORADEC_CFLAGS = @THEORADEC_CFLAGS@ ++THEORADEC_LIBS = @THEORADEC_LIBS@ ++TIGER_CFLAGS = @TIGER_CFLAGS@ ++TIGER_LIBS = @TIGER_LIBS@ ++TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@ ++TIMIDITY_LIBS = @TIMIDITY_LIBS@ ++USE_NLS = @USE_NLS@ ++V = @V@ ++VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ ++VALGRIND_LIBS = @VALGRIND_LIBS@ ++VALGRIND_PATH = @VALGRIND_PATH@ ++VDPAU_CFLAGS = @VDPAU_CFLAGS@ ++VDPAU_LIBS = @VDPAU_LIBS@ ++VERSION = @VERSION@ ++WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@ ++WILDMIDI_LIBS = @WILDMIDI_LIBS@ ++WIN32_LIBS = @WIN32_LIBS@ ++X11_CFLAGS = @X11_CFLAGS@ ++X11_LIBS = @X11_LIBS@ ++XDG_LIBS = @XDG_LIBS@ ++XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ++XMKMF = @XMKMF@ ++XMP_1_99_5_CFLAGS = @XMP_1_99_5_CFLAGS@ ++XMP_1_99_5_LIBS = @XMP_1_99_5_LIBS@ ++XMP_CFLAGS = @XMP_CFLAGS@ ++XMP_LIBS = @XMP_LIBS@ ++XVID_LIBS = @XVID_LIBS@ ++X_CFLAGS = @X_CFLAGS@ ++X_EXTRA_LIBS = @X_EXTRA_LIBS@ ++X_LIBS = @X_LIBS@ ++X_PRE_LIBS = @X_PRE_LIBS@ ++ZBAR_CFLAGS = @ZBAR_CFLAGS@ ++ZBAR_LIBS = @ZBAR_LIBS@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ++ac_ct_OBJC = @ac_ct_OBJC@ ++am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ ++am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ ++install_sh = @install_sh@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++pkgpyexecdir = @pkgpyexecdir@ ++pkgpythondir = @pkgpythondir@ ++plugindir = @plugindir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++pyexecdir = @pyexecdir@ ++pythondir = @pythondir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++shavedir = @shavedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_build_prefix = @top_build_prefix@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ ++plugin_LTLIBRARIES = libgstdtmf.la ++libgstdtmf_la_SOURCES = gstdtmfsrc.c \ ++ gstdtmfdetect.c \ ++ gstrtpdtmfsrc.c \ ++ gstrtpdtmfdepay.c \ ++ tone_detect.c \ ++ gstdtmf.c ++ ++noinst_HEADERS = gstdtmfsrc.h \ ++ gstdtmfdetect.h \ ++ gstrtpdtmfsrc.h \ ++ gstrtpdtmfdepay.h \ ++ gstrtpdtmfcommon.h \ ++ tone_detect.h ++ ++libgstdtmf_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \ ++ -DEXTERN_BUF -DRTP_SUPPORT ++ ++libgstdtmf_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-@GST_MAJORMINOR@ \ ++ $(GST_BASE_LIBS) $(GST_LIBS) $(LIBM) ++ ++libgstdtmf_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) ++libgstdtmf_la_LIBTOOLFLAGS = --tag=disable-static ++all: all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/dtmf/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnu gst/dtmf/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) ++ @$(NORMAL_INSTALL) ++ test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)" ++ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ ++ list2=; for p in $$list; do \ ++ if test -f $$p; then \ ++ list2="$$list2 $$p"; \ ++ else :; fi; \ ++ done; \ ++ test -z "$$list2" || { \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \ ++ } ++ ++uninstall-pluginLTLIBRARIES: ++ @$(NORMAL_UNINSTALL) ++ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ ++ for p in $$list; do \ ++ $(am__strip_dir) \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \ ++ done ++ ++clean-pluginLTLIBRARIES: ++ -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) ++ @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ ++ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ++ test "$$dir" != "$$p" || dir=.; \ ++ echo "rm -f \"$${dir}/so_locations\""; \ ++ rm -f "$${dir}/so_locations"; \ ++ done ++libgstdtmf.la: $(libgstdtmf_la_OBJECTS) $(libgstdtmf_la_DEPENDENCIES) ++ $(libgstdtmf_la_LINK) -rpath $(plugindir) $(libgstdtmf_la_OBJECTS) $(libgstdtmf_la_LIBADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdtmf_la-gstdtmf.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdtmf_la-gstdtmfdetect.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdtmf_la-tone_detect.Plo@am__quote@ ++ ++.c.o: ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< ++ ++.c.obj: ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< ++ ++libgstdtmf_la-gstdtmfsrc.lo: gstdtmfsrc.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstdtmfsrc.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Tpo -c -o libgstdtmf_la-gstdtmfsrc.lo `test -f 'gstdtmfsrc.c' || echo '$(srcdir)/'`gstdtmfsrc.c ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Tpo $(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstdtmfsrc.c' object='libgstdtmf_la-gstdtmfsrc.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstdtmfsrc.lo `test -f 'gstdtmfsrc.c' || echo '$(srcdir)/'`gstdtmfsrc.c ++ ++libgstdtmf_la-gstdtmfdetect.lo: gstdtmfdetect.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstdtmfdetect.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstdtmfdetect.Tpo -c -o libgstdtmf_la-gstdtmfdetect.lo `test -f 'gstdtmfdetect.c' || echo '$(srcdir)/'`gstdtmfdetect.c ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstdtmf_la-gstdtmfdetect.Tpo $(DEPDIR)/libgstdtmf_la-gstdtmfdetect.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstdtmfdetect.c' object='libgstdtmf_la-gstdtmfdetect.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstdtmfdetect.lo `test -f 'gstdtmfdetect.c' || echo '$(srcdir)/'`gstdtmfdetect.c ++ ++libgstdtmf_la-gstrtpdtmfsrc.lo: gstrtpdtmfsrc.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstrtpdtmfsrc.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Tpo -c -o libgstdtmf_la-gstrtpdtmfsrc.lo `test -f 'gstrtpdtmfsrc.c' || echo '$(srcdir)/'`gstrtpdtmfsrc.c ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Tpo $(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstrtpdtmfsrc.c' object='libgstdtmf_la-gstrtpdtmfsrc.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstrtpdtmfsrc.lo `test -f 'gstrtpdtmfsrc.c' || echo '$(srcdir)/'`gstrtpdtmfsrc.c ++ ++libgstdtmf_la-gstrtpdtmfdepay.lo: gstrtpdtmfdepay.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstrtpdtmfdepay.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Tpo -c -o libgstdtmf_la-gstrtpdtmfdepay.lo `test -f 'gstrtpdtmfdepay.c' || echo '$(srcdir)/'`gstrtpdtmfdepay.c ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Tpo $(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstrtpdtmfdepay.c' object='libgstdtmf_la-gstrtpdtmfdepay.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstrtpdtmfdepay.lo `test -f 'gstrtpdtmfdepay.c' || echo '$(srcdir)/'`gstrtpdtmfdepay.c ++ ++libgstdtmf_la-tone_detect.lo: tone_detect.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-tone_detect.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-tone_detect.Tpo -c -o libgstdtmf_la-tone_detect.lo `test -f 'tone_detect.c' || echo '$(srcdir)/'`tone_detect.c ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstdtmf_la-tone_detect.Tpo $(DEPDIR)/libgstdtmf_la-tone_detect.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tone_detect.c' object='libgstdtmf_la-tone_detect.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-tone_detect.lo `test -f 'tone_detect.c' || echo '$(srcdir)/'`tone_detect.c ++ ++libgstdtmf_la-gstdtmf.lo: gstdtmf.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstdtmf.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstdtmf.Tpo -c -o libgstdtmf_la-gstdtmf.lo `test -f 'gstdtmf.c' || echo '$(srcdir)/'`gstdtmf.c ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstdtmf_la-gstdtmf.Tpo $(DEPDIR)/libgstdtmf_la-gstdtmf.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstdtmf.c' object='libgstdtmf_la-gstdtmf.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstdtmf.lo `test -f 'gstdtmf.c' || echo '$(srcdir)/'`gstdtmf.c ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ mkid -fID $$unique ++tags: TAGS ++ ++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ set x; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++check-am: all-am ++check: check-am ++all-am: Makefile $(LTLIBRARIES) $(HEADERS) ++installdirs: ++ for dir in "$(DESTDIR)$(plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \ ++ mostlyclean-am ++ ++distclean: distclean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: install-pluginLTLIBRARIES ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libtool clean-pluginLTLIBRARIES ctags distclean \ ++ distclean-compile distclean-generic distclean-libtool \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-pluginLTLIBRARIES \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-compile \ ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags uninstall uninstall-am uninstall-pluginLTLIBRARIES ++ ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/tone_detect.c gst-plugins-good0.10-0.10.23/farsight/dtmf/tone_detect.c +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/tone_detect.c 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/tone_detect.c 2009-11-20 06:07:05.000000000 -0500 +@@ -0,0 +1,516 @@ ++/* ++ * DTMF Receiver module, part of: ++ * BSD Telephony Of Mexico "Zapata" Telecom Library, version 1.10 12/9/01 ++ * ++ * Part of the "Zapata" Computer Telephony Technology. ++ * ++ * See http://www.bsdtelephony.com.mx ++ * ++ * ++ * The technologies, software, hardware, designs, drawings, scheumatics, board ++ * layouts and/or artwork, concepts, methodologies (including the use of all ++ * of these, and that which is derived from the use of all of these), all other ++ * intellectual properties contained herein, and all intellectual property ++ * rights have been and shall continue to be expressly for the benefit of all ++ * mankind, and are perpetually placed in the public domain, and may be used, ++ * copied, and/or modified by anyone, in any manner, for any legal purpose, ++ * without restriction. ++ * ++ * This module written by Stephen Underwood. ++ */ ++ ++/* ++ tone_detect.c - General telephony tone detection, and specific ++ detection of DTMF. ++ ++ Copyright (C) 2001 Steve Underwood ++ ++ Despite my general liking of the GPL, I place this code in the ++ public domain for the benefit of all mankind - even the slimy ++ ones who might try to proprietize my work and use it to my ++ detriment. ++*/ ++ ++#include ++#include ++#include ++#include ++#include ++#include "tone_detect.h" ++ ++#define FALSE 0 ++#define TRUE (!FALSE) ++ ++//#define USE_3DNOW ++ ++/* Basic DTMF specs: ++ * ++ * Minimum tone on = 40ms ++ * Minimum tone off = 50ms ++ * Maximum digit rate = 10 per second ++ * Normal twist <= 8dB accepted ++ * Reverse twist <= 4dB accepted ++ * S/N >= 15dB will detect OK ++ * Attenuation <= 26dB will detect OK ++ * Frequency tolerance +- 1.5% will detect, +-3.5% will reject ++ */ ++ ++#define SAMPLE_RATE 8000.0 ++ ++#define DTMF_THRESHOLD 8.0e7 ++#define FAX_THRESHOLD 8.0e7 ++#define FAX_2ND_HARMONIC 2.0 /* 4dB */ ++#define DTMF_NORMAL_TWIST 6.3 /* 8dB */ ++#define DTMF_REVERSE_TWIST ((isradio) ? 4.0 : 2.5) /* 4dB normal */ ++#define DTMF_RELATIVE_PEAK_ROW 6.3 /* 8dB */ ++#define DTMF_RELATIVE_PEAK_COL 6.3 /* 8dB */ ++#define DTMF_2ND_HARMONIC_ROW ((isradio) ? 1.7 : 2.5) /* 4dB normal */ ++#define DTMF_2ND_HARMONIC_COL 63.1 /* 18dB */ ++ ++static tone_detection_descriptor_t dtmf_detect_row[4]; ++static tone_detection_descriptor_t dtmf_detect_col[4]; ++static tone_detection_descriptor_t dtmf_detect_row_2nd[4]; ++static tone_detection_descriptor_t dtmf_detect_col_2nd[4]; ++static tone_detection_descriptor_t fax_detect; ++static tone_detection_descriptor_t fax_detect_2nd; ++ ++static float dtmf_row[] = ++{ ++ 697.0, 770.0, 852.0, 941.0 ++}; ++static float dtmf_col[] = ++{ ++ 1209.0, 1336.0, 1477.0, 1633.0 ++}; ++ ++static float fax_freq = 1100.0; ++ ++static char dtmf_positions[] = "123A" "456B" "789C" "*0#D"; ++ ++static void goertzel_init(goertzel_state_t *s, ++ tone_detection_descriptor_t *t) ++{ ++ s->v2 = ++ s->v3 = 0.0; ++ s->fac = t->fac; ++} ++/*- End of function --------------------------------------------------------*/ ++ ++#if defined(USE_3DNOW) ++static inline void _dtmf_goertzel_update(goertzel_state_t *s, ++ float x[], ++ int samples) ++{ ++ int n; ++ float v; ++ int i; ++ float vv[16]; ++ ++ vv[4] = s[0].v2; ++ vv[5] = s[1].v2; ++ vv[6] = s[2].v2; ++ vv[7] = s[3].v2; ++ vv[8] = s[0].v3; ++ vv[9] = s[1].v3; ++ vv[10] = s[2].v3; ++ vv[11] = s[3].v3; ++ vv[12] = s[0].fac; ++ vv[13] = s[1].fac; ++ vv[14] = s[2].fac; ++ vv[15] = s[3].fac; ++ ++ //v1 = s->v2; ++ //s->v2 = s->v3; ++ //s->v3 = s->fac*s->v2 - v1 + x[0]; ++ ++ __asm__ __volatile__ ( ++ " femms;\n" ++ ++ " movq 16(%%edx),%%mm2;\n" ++ " movq 24(%%edx),%%mm3;\n" ++ " movq 32(%%edx),%%mm4;\n" ++ " movq 40(%%edx),%%mm5;\n" ++ " movq 48(%%edx),%%mm6;\n" ++ " movq 56(%%edx),%%mm7;\n" ++ ++ " jmp 1f;\n" ++ " .align 32;\n" ++ ++ " 1: ;\n" ++ " prefetch (%%eax);\n" ++ " movq %%mm3,%%mm1;\n" ++ " movq %%mm2,%%mm0;\n" ++ " movq %%mm5,%%mm3;\n" ++ " movq %%mm4,%%mm2;\n" ++ ++ " pfmul %%mm7,%%mm5;\n" ++ " pfmul %%mm6,%%mm4;\n" ++ " pfsub %%mm1,%%mm5;\n" ++ " pfsub %%mm0,%%mm4;\n" ++ ++ " movq (%%eax),%%mm0;\n" ++ " movq %%mm0,%%mm1;\n" ++ " punpckldq %%mm0,%%mm1;\n" ++ " add $4,%%eax;\n" ++ " pfadd %%mm1,%%mm5;\n" ++ " pfadd %%mm1,%%mm4;\n" ++ ++ " dec %%ecx;\n" ++ ++ " jnz 1b;\n" ++ ++ " movq %%mm2,16(%%edx);\n" ++ " movq %%mm3,24(%%edx);\n" ++ " movq %%mm4,32(%%edx);\n" ++ " movq %%mm5,40(%%edx);\n" ++ ++ " femms;\n" ++ : ++ : "c" (samples), "a" (x), "d" (vv) ++ : "memory", "eax", "ecx"); ++ ++ s[0].v2 = vv[4]; ++ s[1].v2 = vv[5]; ++ s[2].v2 = vv[6]; ++ s[3].v2 = vv[7]; ++ s[0].v3 = vv[8]; ++ s[1].v3 = vv[9]; ++ s[2].v3 = vv[10]; ++ s[3].v3 = vv[11]; ++} ++#endif ++/*- End of function --------------------------------------------------------*/ ++ ++void zap_goertzel_update(goertzel_state_t *s, ++ int16_t x[], ++ int samples) ++{ ++ int i; ++ float v1; ++ ++ for (i = 0; i < samples; i++) ++ { ++ v1 = s->v2; ++ s->v2 = s->v3; ++ s->v3 = s->fac*s->v2 - v1 + x[i]; ++ } ++} ++/*- End of function --------------------------------------------------------*/ ++ ++float zap_goertzel_result (goertzel_state_t *s) ++{ ++ return s->v3*s->v3 + s->v2*s->v2 - s->v2*s->v3*s->fac; ++} ++/*- End of function --------------------------------------------------------*/ ++ ++void zap_dtmf_detect_init (dtmf_detect_state_t *s) ++{ ++ int i; ++ float theta; ++ ++ s->hit1 = ++ s->hit2 = 0; ++ ++ for (i = 0; i < 4; i++) ++ { ++ theta = 2.0*M_PI*(dtmf_row[i]/SAMPLE_RATE); ++ dtmf_detect_row[i].fac = 2.0*cos(theta); ++ ++ theta = 2.0*M_PI*(dtmf_col[i]/SAMPLE_RATE); ++ dtmf_detect_col[i].fac = 2.0*cos(theta); ++ ++ theta = 2.0*M_PI*(dtmf_row[i]*2.0/SAMPLE_RATE); ++ dtmf_detect_row_2nd[i].fac = 2.0*cos(theta); ++ ++ theta = 2.0*M_PI*(dtmf_col[i]*2.0/SAMPLE_RATE); ++ dtmf_detect_col_2nd[i].fac = 2.0*cos(theta); ++ ++ goertzel_init (&s->row_out[i], &dtmf_detect_row[i]); ++ goertzel_init (&s->col_out[i], &dtmf_detect_col[i]); ++ goertzel_init (&s->row_out2nd[i], &dtmf_detect_row_2nd[i]); ++ goertzel_init (&s->col_out2nd[i], &dtmf_detect_col_2nd[i]); ++ ++ s->energy = 0.0; ++ } ++ ++ /* Same for the fax dector */ ++ theta = 2.0*M_PI*(fax_freq/SAMPLE_RATE); ++ fax_detect.fac = 2.0 * cos(theta); ++ goertzel_init (&s->fax_tone, &fax_detect); ++ ++ /* Same for the fax dector 2nd harmonic */ ++ theta = 2.0*M_PI*(fax_freq * 2.0/SAMPLE_RATE); ++ fax_detect_2nd.fac = 2.0 * cos(theta); ++ goertzel_init (&s->fax_tone2nd, &fax_detect_2nd); ++ ++ s->current_sample = 0; ++ s->detected_digits = 0; ++ s->lost_digits = 0; ++ s->digits[0] = '\0'; ++ s->mhit = 0; ++} ++/*- End of function --------------------------------------------------------*/ ++ ++int zap_dtmf_detect (dtmf_detect_state_t *s, ++ int16_t amp[], ++ int samples, ++ int isradio) ++{ ++ ++ float row_energy[4]; ++ float col_energy[4]; ++ float fax_energy; ++ float fax_energy_2nd; ++ float famp; ++ float v1; ++ int i; ++ int j; ++ int sample; ++ int best_row; ++ int best_col; ++ int hit; ++ int limit; ++ ++ hit = 0; ++ for (sample = 0; sample < samples; sample = limit) ++ { ++ /* 102 is optimised to meet the DTMF specs. */ ++ if ((samples - sample) >= (102 - s->current_sample)) ++ limit = sample + (102 - s->current_sample); ++ else ++ limit = samples; ++#if defined(USE_3DNOW) ++ _dtmf_goertzel_update (s->row_out, amp + sample, limit - sample); ++ _dtmf_goertzel_update (s->col_out, amp + sample, limit - sample); ++ _dtmf_goertzel_update (s->row_out2nd, amp + sample, limit2 - sample); ++ _dtmf_goertzel_update (s->col_out2nd, amp + sample, limit2 - sample); ++ /* XXX Need to fax detect for 3dnow too XXX */ ++ #warning "Fax Support Broken" ++#else ++ /* The following unrolled loop takes only 35% (rough estimate) of the ++ time of a rolled loop on the machine on which it was developed */ ++ for (j = sample; j < limit; j++) ++ { ++ famp = amp[j]; ++ ++ s->energy += famp*famp; ++ ++ /* With GCC 2.95, the following unrolled code seems to take about 35% ++ (rough estimate) as long as a neat little 0-3 loop */ ++ v1 = s->row_out[0].v2; ++ s->row_out[0].v2 = s->row_out[0].v3; ++ s->row_out[0].v3 = s->row_out[0].fac*s->row_out[0].v2 - v1 + famp; ++ ++ v1 = s->col_out[0].v2; ++ s->col_out[0].v2 = s->col_out[0].v3; ++ s->col_out[0].v3 = s->col_out[0].fac*s->col_out[0].v2 - v1 + famp; ++ ++ v1 = s->row_out[1].v2; ++ s->row_out[1].v2 = s->row_out[1].v3; ++ s->row_out[1].v3 = s->row_out[1].fac*s->row_out[1].v2 - v1 + famp; ++ ++ v1 = s->col_out[1].v2; ++ s->col_out[1].v2 = s->col_out[1].v3; ++ s->col_out[1].v3 = s->col_out[1].fac*s->col_out[1].v2 - v1 + famp; ++ ++ v1 = s->row_out[2].v2; ++ s->row_out[2].v2 = s->row_out[2].v3; ++ s->row_out[2].v3 = s->row_out[2].fac*s->row_out[2].v2 - v1 + famp; ++ ++ v1 = s->col_out[2].v2; ++ s->col_out[2].v2 = s->col_out[2].v3; ++ s->col_out[2].v3 = s->col_out[2].fac*s->col_out[2].v2 - v1 + famp; ++ ++ v1 = s->row_out[3].v2; ++ s->row_out[3].v2 = s->row_out[3].v3; ++ s->row_out[3].v3 = s->row_out[3].fac*s->row_out[3].v2 - v1 + famp; ++ ++ v1 = s->col_out[3].v2; ++ s->col_out[3].v2 = s->col_out[3].v3; ++ s->col_out[3].v3 = s->col_out[3].fac*s->col_out[3].v2 - v1 + famp; ++ ++ v1 = s->col_out2nd[0].v2; ++ s->col_out2nd[0].v2 = s->col_out2nd[0].v3; ++ s->col_out2nd[0].v3 = s->col_out2nd[0].fac*s->col_out2nd[0].v2 - v1 + famp; ++ ++ v1 = s->row_out2nd[0].v2; ++ s->row_out2nd[0].v2 = s->row_out2nd[0].v3; ++ s->row_out2nd[0].v3 = s->row_out2nd[0].fac*s->row_out2nd[0].v2 - v1 + famp; ++ ++ v1 = s->col_out2nd[1].v2; ++ s->col_out2nd[1].v2 = s->col_out2nd[1].v3; ++ s->col_out2nd[1].v3 = s->col_out2nd[1].fac*s->col_out2nd[1].v2 - v1 + famp; ++ ++ v1 = s->row_out2nd[1].v2; ++ s->row_out2nd[1].v2 = s->row_out2nd[1].v3; ++ s->row_out2nd[1].v3 = s->row_out2nd[1].fac*s->row_out2nd[1].v2 - v1 + famp; ++ ++ v1 = s->col_out2nd[2].v2; ++ s->col_out2nd[2].v2 = s->col_out2nd[2].v3; ++ s->col_out2nd[2].v3 = s->col_out2nd[2].fac*s->col_out2nd[2].v2 - v1 + famp; ++ ++ v1 = s->row_out2nd[2].v2; ++ s->row_out2nd[2].v2 = s->row_out2nd[2].v3; ++ s->row_out2nd[2].v3 = s->row_out2nd[2].fac*s->row_out2nd[2].v2 - v1 + famp; ++ ++ v1 = s->col_out2nd[3].v2; ++ s->col_out2nd[3].v2 = s->col_out2nd[3].v3; ++ s->col_out2nd[3].v3 = s->col_out2nd[3].fac*s->col_out2nd[3].v2 - v1 + famp; ++ ++ v1 = s->row_out2nd[3].v2; ++ s->row_out2nd[3].v2 = s->row_out2nd[3].v3; ++ s->row_out2nd[3].v3 = s->row_out2nd[3].fac*s->row_out2nd[3].v2 - v1 + famp; ++ ++ /* Update fax tone */ ++ v1 = s->fax_tone.v2; ++ s->fax_tone.v2 = s->fax_tone.v3; ++ s->fax_tone.v3 = s->fax_tone.fac*s->fax_tone.v2 - v1 + famp; ++ ++ v1 = s->fax_tone.v2; ++ s->fax_tone2nd.v2 = s->fax_tone2nd.v3; ++ s->fax_tone2nd.v3 = s->fax_tone2nd.fac*s->fax_tone2nd.v2 - v1 + famp; ++ } ++#endif ++ s->current_sample += (limit - sample); ++ if (s->current_sample < 102) ++ continue; ++ ++ /* Detect the fax energy, too */ ++ fax_energy = zap_goertzel_result(&s->fax_tone); ++ ++ /* We are at the end of a DTMF detection block */ ++ /* Find the peak row and the peak column */ ++ row_energy[0] = zap_goertzel_result (&s->row_out[0]); ++ col_energy[0] = zap_goertzel_result (&s->col_out[0]); ++ ++ for (best_row = best_col = 0, i = 1; i < 4; i++) ++ { ++ row_energy[i] = zap_goertzel_result (&s->row_out[i]); ++ if (row_energy[i] > row_energy[best_row]) ++ best_row = i; ++ col_energy[i] = zap_goertzel_result (&s->col_out[i]); ++ if (col_energy[i] > col_energy[best_col]) ++ best_col = i; ++ } ++ hit = 0; ++ /* Basic signal level test and the twist test */ ++ if (row_energy[best_row] >= DTMF_THRESHOLD ++ && ++ col_energy[best_col] >= DTMF_THRESHOLD ++ && ++ col_energy[best_col] < row_energy[best_row]*DTMF_REVERSE_TWIST ++ && ++ col_energy[best_col]*DTMF_NORMAL_TWIST > row_energy[best_row]) ++ { ++ /* Relative peak test */ ++ for (i = 0; i < 4; i++) ++ { ++ if ((i != best_col && col_energy[i]*DTMF_RELATIVE_PEAK_COL > col_energy[best_col]) ++ || ++ (i != best_row && row_energy[i]*DTMF_RELATIVE_PEAK_ROW > row_energy[best_row])) ++ { ++ break; ++ } ++ } ++ /* ... and second harmonic test */ ++ if (i >= 4 ++ && ++ (row_energy[best_row] + col_energy[best_col]) > 42.0*s->energy ++ && ++ zap_goertzel_result (&s->col_out2nd[best_col])*DTMF_2ND_HARMONIC_COL < col_energy[best_col] ++ && ++ zap_goertzel_result (&s->row_out2nd[best_row])*DTMF_2ND_HARMONIC_ROW < row_energy[best_row]) ++ { ++ hit = dtmf_positions[(best_row << 2) + best_col]; ++ /* Look for two successive similar results */ ++ /* The logic in the next test is: ++ We need two successive identical clean detects, with ++ something different preceeding it. This can work with ++ back to back differing digits. More importantly, it ++ can work with nasty phones that give a very wobbly start ++ to a digit. */ ++ if (hit == s->hit3 && s->hit3 != s->hit2) ++ { ++ s->mhit = hit; ++ s->digit_hits[(best_row << 2) + best_col]++; ++ s->detected_digits++; ++ if (s->current_digits < MAX_DTMF_DIGITS) ++ { ++ s->digits[s->current_digits++] = hit; ++ s->digits[s->current_digits] = '\0'; ++ } ++ else ++ { ++ s->lost_digits++; ++ } ++ } ++ } ++ } ++ if (!hit && (fax_energy >= FAX_THRESHOLD) && (fax_energy > s->energy * 21.0)) { ++ fax_energy_2nd = zap_goertzel_result(&s->fax_tone2nd); ++ if (fax_energy_2nd * FAX_2ND_HARMONIC < fax_energy) { ++#if 0 ++ printf("Fax energy/Second Harmonic: %f/%f\n", fax_energy, fax_energy_2nd); ++#endif ++ /* XXX Probably need better checking than just this the energy XXX */ ++ hit = 'f'; ++ s->fax_hits++; ++ } /* Don't reset fax hits counter */ ++ } else { ++ if (s->fax_hits > 5) { ++ s->mhit = 'f'; ++ s->detected_digits++; ++ if (s->current_digits < MAX_DTMF_DIGITS) ++ { ++ s->digits[s->current_digits++] = hit; ++ s->digits[s->current_digits] = '\0'; ++ } ++ else ++ { ++ s->lost_digits++; ++ } ++ } ++ s->fax_hits = 0; ++ } ++ s->hit1 = s->hit2; ++ s->hit2 = s->hit3; ++ s->hit3 = hit; ++ /* Reinitialise the detector for the next block */ ++ for (i = 0; i < 4; i++) ++ { ++ goertzel_init (&s->row_out[i], &dtmf_detect_row[i]); ++ goertzel_init (&s->col_out[i], &dtmf_detect_col[i]); ++ goertzel_init (&s->row_out2nd[i], &dtmf_detect_row_2nd[i]); ++ goertzel_init (&s->col_out2nd[i], &dtmf_detect_col_2nd[i]); ++ } ++ goertzel_init (&s->fax_tone, &fax_detect); ++ goertzel_init (&s->fax_tone2nd, &fax_detect_2nd); ++ s->energy = 0.0; ++ s->current_sample = 0; ++ } ++ if ((!s->mhit) || (s->mhit != hit)) ++ { ++ s->mhit = 0; ++ return(0); ++ } ++ return (hit); ++} ++/*- End of function --------------------------------------------------------*/ ++ ++int zap_dtmf_get (dtmf_detect_state_t *s, ++ char *buf, ++ int max) ++{ ++ if (max > s->current_digits) ++ max = s->current_digits; ++ if (max > 0) ++ { ++ memcpy (buf, s->digits, max); ++ memmove (s->digits, s->digits + max, s->current_digits - max); ++ s->current_digits -= max; ++ } ++ buf[max] = '\0'; ++ return max; ++} ++/*- End of function --------------------------------------------------------*/ ++/*- End of file ------------------------------------------------------------*/ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/tone_detect.h gst-plugins-good0.10-0.10.23/farsight/dtmf/tone_detect.h +--- gst-plugins-good0.10-0.10.23.ori/farsight/dtmf/tone_detect.h 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/dtmf/tone_detect.h 2009-11-22 14:04:38.000000000 -0500 +@@ -0,0 +1,93 @@ ++/* ++ * Header file for DTMF Receiver module, part of: ++ * BSD Telephony Of Mexico "Zapata" Telecom Library, version 1.10 12/9/01 ++ * ++ * Part of the "Zapata" Computer Telephony Technology. ++ * ++ * See http://www.bsdtelephony.com.mx ++ * ++ * ++ * The technologies, software, hardware, designs, drawings, scheumatics, board ++ * layouts and/or artwork, concepts, methodologies (including the use of all ++ * of these, and that which is derived from the use of all of these), all other ++ * intellectual properties contained herein, and all intellectual property ++ * rights have been and shall continue to be expressly for the benefit of all ++ * mankind, and are perpetually placed in the public domain, and may be used, ++ * copied, and/or modified by anyone, in any manner, for any legal purpose, ++ * without restriction. ++ * ++ * This module written by Stephen Underwood. ++ */ ++/* ++ tone_detect.h - General telephony tone detection, and specific ++ detection of DTMF. ++ ++ Copyright (C) 2001 Steve Underwood ++ ++ Despite my general liking of the GPL, I place this code in the ++ public domain for the benefit of all mankind - even the slimy ++ ones who might try to proprietize my work and use it to my ++ detriment. ++*/ ++ ++#ifndef __TONE_DETECT_H__ ++#define __TONE_DETECT_H__ ++ ++#include "_stdint.h" ++ ++typedef struct ++{ ++ float v2; ++ float v3; ++ float fac; ++} goertzel_state_t; ++ ++#define MAX_DTMF_DIGITS 128 ++ ++typedef struct ++{ ++ int hit1; ++ int hit2; ++ int hit3; ++ int hit4; ++ int mhit; ++ ++ goertzel_state_t row_out[4]; ++ goertzel_state_t col_out[4]; ++ goertzel_state_t row_out2nd[4]; ++ goertzel_state_t col_out2nd[4]; ++ goertzel_state_t fax_tone; ++ goertzel_state_t fax_tone2nd; ++ float energy; ++ ++ int current_sample; ++ char digits[MAX_DTMF_DIGITS + 1]; ++ int current_digits; ++ int detected_digits; ++ int lost_digits; ++ int digit_hits[16]; ++ int fax_hits; ++} dtmf_detect_state_t; ++ ++typedef struct ++{ ++ float fac; ++} tone_detection_descriptor_t; ++ ++void zap_goertzel_update(goertzel_state_t *s, ++ int16_t x[], ++ int samples); ++float zap_goertzel_result (goertzel_state_t *s); ++ ++void zap_dtmf_detect_init (dtmf_detect_state_t *s); ++int zap_dtmf_detect (dtmf_detect_state_t *s, ++ int16_t amp[], ++ int samples, ++ int isradio); ++int zap_dtmf_get (dtmf_detect_state_t *s, ++ char *buf, ++ int max); ++ ++#endif /* __TONE_DETECT_H__ */ ++ ++/*- End of file ------------------------------------------------------------*/ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/liveadder/liveadder.c gst-plugins-good0.10-0.10.23/farsight/liveadder/liveadder.c +--- gst-plugins-good0.10-0.10.23.ori/farsight/liveadder/liveadder.c 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/liveadder/liveadder.c 2009-07-31 11:36:48.000000000 -0400 +@@ -0,0 +1,1548 @@ ++/* ++ * Farsight Voice+Video library ++ * ++ * Copyright 2008 Collabora Ltd ++ * Copyright 2008 Nokia Corporation ++ * @author: Olivier Crete ++ * ++ * With parts copied from the adder plugin which is ++ * Copyright (C) 1999,2000 Erik Walthinsen ++ * 2001 Thomas ++ * 2005,2006 Wim Taymans ++ * ++ * This library 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.1 of the License, or (at your option) any later version. ++ * ++ * This library 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 library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ * ++ */ ++/** ++ * SECTION:element-liveadder ++ * @see_also: adder ++ * ++ * The live adder allows to mix several streams into one by adding the data. ++ * Mixed data is clamped to the min/max values of the data format. ++ * ++ * Unlike the adder, the liveadder mixes the streams according the their ++ * timestamps and waits for some milli-seconds before trying doing the mixing. ++ * ++ * Last reviewed on 2008-02-10 (0.10.11) ++ */ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include "liveadder.h" ++ ++#include ++ ++#include ++ ++#define DEFAULT_LATENCY_MS 60 ++ ++GST_DEBUG_CATEGORY_STATIC (live_adder_debug); ++#define GST_CAT_DEFAULT (live_adder_debug) ++ ++/* elementfactory information */ ++static const GstElementDetails gst_live_adder_details = ++GST_ELEMENT_DETAILS ("Live Adder element", ++ "Generic/Audio", ++ "Mixes live/discontinuous audio streams", ++ "Olivier Crete "); ++ ++ ++static GstStaticPadTemplate gst_live_adder_sink_template = ++ GST_STATIC_PAD_TEMPLATE ("sink%d", ++ GST_PAD_SINK, ++ GST_PAD_REQUEST, ++ GST_STATIC_CAPS (GST_AUDIO_INT_PAD_TEMPLATE_CAPS "; " ++ GST_AUDIO_FLOAT_PAD_TEMPLATE_CAPS) ++ ); ++ ++static GstStaticPadTemplate gst_live_adder_src_template = ++ GST_STATIC_PAD_TEMPLATE ("src", ++ GST_PAD_SRC, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS (GST_AUDIO_INT_PAD_TEMPLATE_CAPS "; " ++ GST_AUDIO_FLOAT_PAD_TEMPLATE_CAPS) ++ ); ++ ++/* Valve signals and args */ ++enum ++{ ++ /* FILL ME */ ++ LAST_SIGNAL ++}; ++ ++enum ++{ ++ PROP_0, ++ PROP_LATENCY, ++}; ++ ++typedef struct _GstLiveAdderPadPrivate ++{ ++ GstSegment segment; ++ gboolean eos; ++ ++ GstClockTime expected_timestamp; ++ ++} GstLiveAdderPadPrivate; ++ ++ ++GST_BOILERPLATE (GstLiveAdder, gst_live_adder, GstElement, GST_TYPE_ELEMENT); ++ ++ ++static void gst_live_adder_finalize (GObject * object); ++static void ++gst_live_adder_set_property (GObject * object, ++ guint prop_id, const GValue * value, GParamSpec * pspec); ++static void ++gst_live_adder_get_property (GObject * object, ++ guint prop_id, GValue * value, GParamSpec * pspec); ++ ++static GstPad *gst_live_adder_request_new_pad (GstElement * element, ++ GstPadTemplate * templ, const gchar * unused); ++static void gst_live_adder_release_pad (GstElement * element, GstPad * pad); ++static GstStateChangeReturn ++gst_live_adder_change_state (GstElement * element, GstStateChange transition); ++ ++static gboolean gst_live_adder_setcaps (GstPad * pad, GstCaps * caps); ++static GstCaps *gst_live_adder_sink_getcaps (GstPad * pad); ++static gboolean ++gst_live_adder_src_activate_push (GstPad * pad, gboolean active); ++static gboolean gst_live_adder_src_event (GstPad * pad, GstEvent * event); ++ ++static void gst_live_adder_loop (gpointer data); ++static gboolean gst_live_adder_query (GstPad * pad, GstQuery * query); ++static gboolean gst_live_adder_sink_event (GstPad * pad, GstEvent * event); ++ ++ ++static void reset_pad_private (GstPad * pad); ++ ++/* clipping versions */ ++#define MAKE_FUNC(name,type,ttype,min,max) \ ++static void name (type *out, type *in, gint bytes) { \ ++ gint i; \ ++ for (i = 0; i < bytes / sizeof (type); i++) \ ++ out[i] = CLAMP ((ttype)out[i] + (ttype)in[i], min, max); \ ++} ++ ++/* non-clipping versions (for float) */ ++#define MAKE_FUNC_NC(name,type,ttype) \ ++static void name (type *out, type *in, gint bytes) { \ ++ gint i; \ ++ for (i = 0; i < bytes / sizeof (type); i++) \ ++ out[i] = (ttype)out[i] + (ttype)in[i]; \ ++} ++ ++/* *INDENT-OFF* */ ++MAKE_FUNC (add_int32, gint32, gint64, G_MININT32, G_MAXINT32) ++MAKE_FUNC (add_int16, gint16, gint32, G_MININT16, G_MAXINT16) ++MAKE_FUNC (add_int8, gint8, gint16, G_MININT8, G_MAXINT8) ++MAKE_FUNC (add_uint32, guint32, guint64, 0, G_MAXUINT32) ++MAKE_FUNC (add_uint16, guint16, guint32, 0, G_MAXUINT16) ++MAKE_FUNC (add_uint8, guint8, guint16, 0, G_MAXUINT8) ++MAKE_FUNC_NC (add_float64, gdouble, gdouble) ++MAKE_FUNC_NC (add_float32, gfloat, gfloat) ++/* *INDENT-ON* */ ++ ++ ++static void ++gst_live_adder_base_init (gpointer klass) ++{ ++} ++ ++static void ++gst_live_adder_class_init (GstLiveAdderClass * klass) ++{ ++ GObjectClass *gobject_class; ++ GstElementClass *gstelement_class; ++ ++ gobject_class = (GObjectClass *) klass; ++ ++ gobject_class->finalize = gst_live_adder_finalize; ++ gobject_class->set_property = gst_live_adder_set_property; ++ gobject_class->get_property = gst_live_adder_get_property; ++ ++ gstelement_class = (GstElementClass *) klass; ++ ++ gst_element_class_add_pad_template (gstelement_class, ++ gst_static_pad_template_get (&gst_live_adder_src_template)); ++ gst_element_class_add_pad_template (gstelement_class, ++ gst_static_pad_template_get (&gst_live_adder_sink_template)); ++ gst_element_class_set_details (gstelement_class, &gst_live_adder_details); ++ ++ parent_class = g_type_class_peek_parent (klass); ++ ++ gstelement_class->request_new_pad = gst_live_adder_request_new_pad; ++ gstelement_class->release_pad = gst_live_adder_release_pad; ++ gstelement_class->change_state = gst_live_adder_change_state; ++ ++ g_object_class_install_property (gobject_class, PROP_LATENCY, ++ g_param_spec_uint ("latency", "Buffer latency in ms", ++ "Amount of data to buffer", 0, G_MAXUINT, DEFAULT_LATENCY_MS, ++ G_PARAM_READWRITE)); ++ ++ GST_DEBUG_CATEGORY_INIT (live_adder_debug, "liveadder", 0, "Live Adder"); ++ ++} ++ ++static void ++gst_live_adder_init (GstLiveAdder * adder, GstLiveAdderClass * klass) ++{ ++ GstPadTemplate *template; ++ ++ template = gst_static_pad_template_get (&gst_live_adder_src_template); ++ adder->srcpad = gst_pad_new_from_template (template, "src"); ++ gst_object_unref (template); ++ gst_pad_set_getcaps_function (adder->srcpad, ++ GST_DEBUG_FUNCPTR (gst_pad_proxy_getcaps)); ++ gst_pad_set_setcaps_function (adder->srcpad, ++ GST_DEBUG_FUNCPTR (gst_live_adder_setcaps)); ++ gst_pad_set_query_function (adder->srcpad, ++ GST_DEBUG_FUNCPTR (gst_live_adder_query)); ++ gst_pad_set_event_function (adder->srcpad, ++ GST_DEBUG_FUNCPTR (gst_live_adder_src_event)); ++ gst_pad_set_activatepush_function (adder->srcpad, ++ GST_DEBUG_FUNCPTR (gst_live_adder_src_activate_push)); ++ gst_element_add_pad (GST_ELEMENT (adder), adder->srcpad); ++ ++ adder->format = GST_LIVE_ADDER_FORMAT_UNSET; ++ adder->padcount = 0; ++ adder->func = NULL; ++ adder->not_empty_cond = g_cond_new (); ++ ++ adder->next_timestamp = GST_CLOCK_TIME_NONE; ++ ++ adder->latency_ms = DEFAULT_LATENCY_MS; ++ ++ adder->buffers = g_queue_new (); ++} ++ ++ ++ ++static void ++gst_live_adder_finalize (GObject * object) ++{ ++ GstLiveAdder *adder = GST_LIVE_ADDER (object); ++ ++ g_cond_free (adder->not_empty_cond); ++ ++ g_queue_foreach (adder->buffers, (GFunc) gst_mini_object_unref, NULL); ++ while (g_queue_pop_head (adder->buffers)) { ++ } ++ g_queue_free (adder->buffers); ++ ++ g_list_free (adder->sinkpads); ++ ++ G_OBJECT_CLASS (parent_class)->finalize (object); ++} ++ ++ ++static void ++gst_live_adder_set_property (GObject * object, ++ guint prop_id, const GValue * value, GParamSpec * pspec) ++{ ++ GstLiveAdder *adder = GST_LIVE_ADDER (object); ++ ++ switch (prop_id) { ++ case PROP_LATENCY: ++ { ++ guint64 new_latency, old_latency; ++ ++ new_latency = g_value_get_uint (value); ++ ++ GST_OBJECT_LOCK (adder); ++ old_latency = adder->latency_ms; ++ adder->latency_ms = new_latency; ++ GST_OBJECT_UNLOCK (adder); ++ ++ /* post message if latency changed, this will inform the parent pipeline ++ * that a latency reconfiguration is possible/needed. */ ++ if (new_latency != old_latency) { ++ GST_DEBUG_OBJECT (adder, "latency changed to: %" GST_TIME_FORMAT, ++ GST_TIME_ARGS (new_latency)); ++ ++ gst_element_post_message (GST_ELEMENT_CAST (adder), ++ gst_message_new_latency (GST_OBJECT_CAST (adder))); ++ } ++ break; ++ } ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++ ++static void ++gst_live_adder_get_property (GObject * object, ++ guint prop_id, GValue * value, GParamSpec * pspec) ++{ ++ GstLiveAdder *adder = GST_LIVE_ADDER (object); ++ ++ switch (prop_id) { ++ case PROP_LATENCY: ++ GST_OBJECT_LOCK (adder); ++ g_value_set_uint (value, adder->latency_ms); ++ GST_OBJECT_UNLOCK (adder); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++ ++/* we can only accept caps that we and downstream can handle. */ ++static GstCaps * ++gst_live_adder_sink_getcaps (GstPad * pad) ++{ ++ GstLiveAdder *adder; ++ GstCaps *result, *peercaps, *sinkcaps; ++ ++ adder = GST_LIVE_ADDER (GST_PAD_PARENT (pad)); ++ ++ /* get the downstream possible caps */ ++ peercaps = gst_pad_peer_get_caps (adder->srcpad); ++ /* get the allowed caps on this sinkpad, we use the fixed caps function so ++ * that it does not call recursively in this function. */ ++ sinkcaps = gst_pad_get_fixed_caps_func (pad); ++ if (peercaps) { ++ /* if the peer has caps, intersect */ ++ GST_DEBUG_OBJECT (adder, "intersecting peer and template caps"); ++ result = gst_caps_intersect (peercaps, sinkcaps); ++ gst_caps_unref (peercaps); ++ gst_caps_unref (sinkcaps); ++ } else { ++ /* the peer has no caps (or there is no peer), just use the allowed caps ++ * of this sinkpad. */ ++ GST_DEBUG_OBJECT (adder, "no peer caps, using sinkcaps"); ++ result = sinkcaps; ++ } ++ ++ return result; ++} ++ ++/* the first caps we receive on any of the sinkpads will define the caps for all ++ * the other sinkpads because we can only mix streams with the same caps. ++ * */ ++static gboolean ++gst_live_adder_setcaps (GstPad * pad, GstCaps * caps) ++{ ++ GstLiveAdder *adder; ++ GList *pads; ++ GstStructure *structure; ++ const char *media_type; ++ ++ adder = GST_LIVE_ADDER (GST_PAD_PARENT (pad)); ++ ++ GST_LOG_OBJECT (adder, "setting caps on pad %p,%s to %" GST_PTR_FORMAT, pad, ++ GST_PAD_NAME (pad), caps); ++ ++ /* FIXME, see if the other pads can accept the format. Also lock the ++ * format on the other pads to this new format. */ ++ GST_OBJECT_LOCK (adder); ++ pads = GST_ELEMENT (adder)->pads; ++ while (pads) { ++ GstPad *otherpad = GST_PAD (pads->data); ++ ++ if (otherpad != pad) ++ gst_caps_replace (&GST_PAD_CAPS (otherpad), caps); ++ ++ pads = g_list_next (pads); ++ } ++ ++ /* parse caps now */ ++ structure = gst_caps_get_structure (caps, 0); ++ media_type = gst_structure_get_name (structure); ++ if (strcmp (media_type, "audio/x-raw-int") == 0) { ++ GST_DEBUG_OBJECT (adder, "parse_caps sets adder to format int"); ++ adder->format = GST_LIVE_ADDER_FORMAT_INT; ++ gst_structure_get_int (structure, "width", &adder->width); ++ gst_structure_get_int (structure, "depth", &adder->depth); ++ gst_structure_get_int (structure, "endianness", &adder->endianness); ++ gst_structure_get_boolean (structure, "signed", &adder->is_signed); ++ ++ if (adder->endianness != G_BYTE_ORDER) ++ goto not_supported; ++ ++ switch (adder->width) { ++ case 8: ++ adder->func = (adder->is_signed ? ++ (GstLiveAdderFunction) add_int8 : (GstLiveAdderFunction) add_uint8); ++ break; ++ case 16: ++ adder->func = (adder->is_signed ? ++ (GstLiveAdderFunction) add_int16 : (GstLiveAdderFunction) ++ add_uint16); ++ break; ++ case 32: ++ adder->func = (adder->is_signed ? ++ (GstLiveAdderFunction) add_int32 : (GstLiveAdderFunction) ++ add_uint32); ++ break; ++ default: ++ goto not_supported; ++ } ++ } else if (strcmp (media_type, "audio/x-raw-float") == 0) { ++ GST_DEBUG_OBJECT (adder, "parse_caps sets adder to format float"); ++ adder->format = GST_LIVE_ADDER_FORMAT_FLOAT; ++ gst_structure_get_int (structure, "width", &adder->width); ++ ++ switch (adder->width) { ++ case 32: ++ adder->func = (GstLiveAdderFunction) add_float32; ++ break; ++ case 64: ++ adder->func = (GstLiveAdderFunction) add_float64; ++ break; ++ default: ++ goto not_supported; ++ } ++ } else { ++ goto not_supported; ++ } ++ ++ gst_structure_get_int (structure, "channels", &adder->channels); ++ gst_structure_get_int (structure, "rate", &adder->rate); ++ /* precalc bps */ ++ adder->bps = (adder->width / 8) * adder->channels; ++ ++ GST_OBJECT_UNLOCK (adder); ++ return TRUE; ++ ++ /* ERRORS */ ++not_supported: ++ { ++ GST_OBJECT_UNLOCK (adder); ++ GST_DEBUG_OBJECT (adder, "unsupported format set as caps"); ++ return FALSE; ++ } ++} ++ ++static void ++gst_live_adder_flush_start (GstLiveAdder * adder) ++{ ++ GST_DEBUG_OBJECT (adder, "Disabling pop on queue"); ++ ++ GST_OBJECT_LOCK (adder); ++ /* mark ourselves as flushing */ ++ adder->srcresult = GST_FLOW_WRONG_STATE; ++ ++ /* Empty the queue */ ++ g_queue_foreach (adder->buffers, (GFunc) gst_mini_object_unref, NULL); ++ while (g_queue_pop_head (adder->buffers)); ++ ++ /* unlock clock, we just unschedule, the entry will be released by the ++ * locking streaming thread. */ ++ if (adder->clock_id) ++ gst_clock_id_unschedule (adder->clock_id); ++ ++ g_cond_broadcast (adder->not_empty_cond); ++ GST_OBJECT_UNLOCK (adder); ++} ++ ++static gboolean ++gst_live_adder_src_activate_push (GstPad * pad, gboolean active) ++{ ++ gboolean result = TRUE; ++ GstLiveAdder *adder = NULL; ++ ++ adder = GST_LIVE_ADDER (gst_pad_get_parent (pad)); ++ ++ if (active) { ++ /* Mark as non flushing */ ++ GST_OBJECT_LOCK (adder); ++ adder->srcresult = GST_FLOW_OK; ++ GST_OBJECT_UNLOCK (adder); ++ ++ /* start pushing out buffers */ ++ GST_DEBUG_OBJECT (adder, "Starting task on srcpad"); ++ gst_pad_start_task (adder->srcpad, ++ (GstTaskFunction) gst_live_adder_loop, adder); ++ } else { ++ /* make sure all data processing stops ASAP */ ++ gst_live_adder_flush_start (adder); ++ ++ /* NOTE this will hardlock if the state change is called from the src pad ++ * task thread because we will _join() the thread. */ ++ GST_DEBUG_OBJECT (adder, "Stopping task on srcpad"); ++ result = gst_pad_stop_task (pad); ++ } ++ ++ gst_object_unref (adder); ++ ++ return result; ++} ++ ++static gboolean ++gst_live_adder_sink_event (GstPad * pad, GstEvent * event) ++{ ++ gboolean ret = TRUE; ++ GstLiveAdder *adder = NULL; ++ GstLiveAdderPadPrivate *padprivate = NULL; ++ ++ adder = GST_LIVE_ADDER (gst_pad_get_parent (pad)); ++ ++ padprivate = gst_pad_get_element_private (pad); ++ ++ if (!padprivate) ++ return FALSE; ++ ++ GST_LOG_OBJECT (adder, "received %s", GST_EVENT_TYPE_NAME (event)); ++ ++ switch (GST_EVENT_TYPE (event)) { ++ case GST_EVENT_NEWSEGMENT: ++ { ++ GstFormat format; ++ gdouble rate, arate; ++ gint64 start, stop, time; ++ gboolean update; ++ ++ gst_event_parse_new_segment_full (event, &update, &rate, &arate, &format, ++ &start, &stop, &time); ++ ++ gst_event_unref (event); ++ ++ /* we need time for now */ ++ if (format != GST_FORMAT_TIME) ++ goto newseg_wrong_format; ++ ++ GST_DEBUG_OBJECT (adder, ++ "newsegment: update %d, rate %g, arate %g, start %" GST_TIME_FORMAT ++ ", stop %" GST_TIME_FORMAT ", time %" GST_TIME_FORMAT, ++ update, rate, arate, GST_TIME_ARGS (start), GST_TIME_ARGS (stop), ++ GST_TIME_ARGS (time)); ++ ++ /* now configure the values, we need these to time the release of the ++ * buffers on the srcpad. */ ++ GST_OBJECT_LOCK (adder); ++ gst_segment_set_newsegment_full (&padprivate->segment, update, ++ rate, arate, format, start, stop, time); ++ GST_OBJECT_UNLOCK (adder); ++ break; ++ } ++ case GST_EVENT_FLUSH_START: ++ gst_live_adder_flush_start (adder); ++ ret = gst_pad_push_event (adder->srcpad, event); ++ break; ++ case GST_EVENT_FLUSH_STOP: ++ GST_OBJECT_LOCK (adder); ++ adder->segment_pending = TRUE; ++ adder->next_timestamp = GST_CLOCK_TIME_NONE; ++ reset_pad_private (pad); ++ adder->segment_pending = TRUE; ++ GST_OBJECT_UNLOCK (adder); ++ ret = gst_pad_push_event (adder->srcpad, event); ++ ret = gst_live_adder_src_activate_push (adder->srcpad, TRUE); ++ break; ++ case GST_EVENT_EOS: ++ { ++ GST_OBJECT_LOCK (adder); ++ ++ ret = adder->srcresult == GST_FLOW_OK; ++ if (ret && !padprivate->eos) { ++ GST_DEBUG_OBJECT (adder, "queuing EOS"); ++ padprivate->eos = TRUE; ++ g_cond_broadcast (adder->not_empty_cond); ++ } else if (padprivate->eos) { ++ GST_DEBUG_OBJECT (adder, "dropping EOS, we are already EOS"); ++ } else { ++ GST_DEBUG_OBJECT (adder, "dropping EOS, reason %s", ++ gst_flow_get_name (adder->srcresult)); ++ } ++ ++ GST_OBJECT_UNLOCK (adder); ++ ++ gst_event_unref (event); ++ break; ++ } ++ default: ++ ret = gst_pad_push_event (adder->srcpad, event); ++ break; ++ } ++ ++done: ++ gst_object_unref (adder); ++ ++ return ret; ++ ++ /* ERRORS */ ++newseg_wrong_format: ++ { ++ GST_DEBUG_OBJECT (adder, "received non TIME newsegment"); ++ ret = FALSE; ++ goto done; ++ } ++} ++ ++static gboolean ++gst_live_adder_query_pos_dur (GstLiveAdder * adder, GstFormat informat, ++ gboolean position, gint64 * outvalue) ++{ ++ gint64 max = G_MININT64; ++ gboolean res = TRUE; ++ GstIterator *it; ++ gboolean done = FALSE; ++ ++ ++ it = gst_element_iterate_sink_pads (GST_ELEMENT_CAST (adder)); ++ while (!done) { ++ GstIteratorResult ires; ++ gpointer item; ++ GstFormat format = informat; ++ ++ ires = gst_iterator_next (it, &item); ++ switch (ires) { ++ case GST_ITERATOR_DONE: ++ done = TRUE; ++ break; ++ case GST_ITERATOR_OK: ++ { ++ GstPad *pad = GST_PAD_CAST (item); ++ gint64 value; ++ gboolean curres; ++ ++ /* ask sink peer for duration */ ++ if (position) ++ curres = gst_pad_query_peer_position (pad, &format, &value); ++ else ++ curres = gst_pad_query_peer_duration (pad, &format, &value); ++ ++ /* take max from all valid return values */ ++ /* Only if the format is the one we requested, otherwise ignore it ? ++ */ ++ ++ if (curres && format == informat) { ++ res &= curres; ++ ++ /* valid unknown length, stop searching */ ++ if (value == -1) { ++ max = value; ++ done = TRUE; ++ } else if (value > max) { ++ max = value; ++ } ++ } ++ break; ++ } ++ case GST_ITERATOR_RESYNC: ++ max = -1; ++ res = TRUE; ++ break; ++ default: ++ res = FALSE; ++ done = TRUE; ++ break; ++ } ++ } ++ gst_iterator_free (it); ++ ++ if (res) ++ *outvalue = max; ++ ++ return res; ++} ++ ++/* FIXME: ++ * ++ * When we add a new stream (or remove a stream) the duration might ++ * also become invalid again and we need to post a new DURATION ++ * message to notify this fact to the parent. ++ * For now we take the max of all the upstream elements so the simple ++ * cases work at least somewhat. ++ */ ++static gboolean ++gst_live_adder_query_duration (GstLiveAdder * adder, GstQuery * query) ++{ ++ GstFormat format; ++ gint64 max; ++ gboolean res; ++ ++ /* parse format */ ++ gst_query_parse_duration (query, &format, NULL); ++ ++ res = gst_live_adder_query_pos_dur (adder, format, FALSE, &max); ++ ++ if (res) { ++ /* and store the max */ ++ gst_query_set_duration (query, format, max); ++ } ++ ++ return res; ++} ++ ++static gboolean ++gst_live_adder_query_position (GstLiveAdder * adder, GstQuery * query) ++{ ++ GstFormat format; ++ gint64 max; ++ gboolean res; ++ ++ /* parse format */ ++ gst_query_parse_position (query, &format, NULL); ++ ++ res = gst_live_adder_query_pos_dur (adder, format, TRUE, &max); ++ ++ if (res) { ++ /* and store the max */ ++ gst_query_set_position (query, format, max); ++ } ++ ++ return res; ++} ++ ++ ++ ++static gboolean ++gst_live_adder_query (GstPad * pad, GstQuery * query) ++{ ++ GstLiveAdder *adder; ++ gboolean res = FALSE; ++ ++ adder = GST_LIVE_ADDER (gst_pad_get_parent (pad)); ++ ++ switch (GST_QUERY_TYPE (query)) { ++ case GST_QUERY_LATENCY: ++ { ++ /* We need to send the query upstream and add the returned latency to our ++ * own */ ++ GstClockTime min_latency = 0, max_latency = G_MAXUINT64; ++ gpointer item; ++ GstIterator *iter = NULL; ++ gboolean done = FALSE; ++ ++ iter = gst_element_iterate_sink_pads (GST_ELEMENT (adder)); ++ ++ while (!done) { ++ switch (gst_iterator_next (iter, &item)) { ++ case GST_ITERATOR_OK: ++ { ++ GstPad *sinkpad = item; ++ GstClockTime pad_min_latency, pad_max_latency; ++ gboolean pad_us_live; ++ ++ if (gst_pad_peer_query (sinkpad, query)) { ++ gst_query_parse_latency (query, &pad_us_live, &pad_min_latency, ++ &pad_max_latency); ++ ++ res = TRUE; ++ ++ GST_DEBUG_OBJECT (adder, "Peer latency for pad %s: min %" ++ GST_TIME_FORMAT " max %" GST_TIME_FORMAT, ++ GST_PAD_NAME (sinkpad), ++ GST_TIME_ARGS (pad_min_latency), ++ GST_TIME_ARGS (pad_max_latency)); ++ ++ min_latency = MAX (pad_min_latency, min_latency); ++ max_latency = MIN (pad_max_latency, max_latency); ++ } ++ gst_object_unref (item); ++ } ++ break; ++ case GST_ITERATOR_RESYNC: ++ min_latency = 0; ++ max_latency = G_MAXUINT64; ++ ++ gst_iterator_resync (iter); ++ break; ++ case GST_ITERATOR_ERROR: ++ GST_ERROR_OBJECT (adder, "Error looping sink pads"); ++ done = TRUE; ++ break; ++ case GST_ITERATOR_DONE: ++ done = TRUE; ++ break; ++ } ++ } ++ gst_iterator_free (iter); ++ ++ if (res) { ++ GstClockTime my_latency = adder->latency_ms * GST_MSECOND; ++ GST_OBJECT_LOCK (adder); ++ adder->peer_latency = min_latency; ++ min_latency += my_latency; ++ GST_OBJECT_UNLOCK (adder); ++ ++ /* Make sure we don't risk an overflow */ ++ if (max_latency < G_MAXUINT64 - my_latency) ++ max_latency += my_latency; ++ else ++ max_latency = G_MAXUINT64; ++ gst_query_set_latency (query, TRUE, min_latency, max_latency); ++ GST_DEBUG_OBJECT (adder, "Calculated total latency : min %" ++ GST_TIME_FORMAT " max %" GST_TIME_FORMAT, ++ GST_TIME_ARGS (min_latency), GST_TIME_ARGS (max_latency)); ++ } ++ break; ++ } ++ case GST_QUERY_DURATION: ++ res = gst_live_adder_query_duration (adder, query); ++ break; ++ case GST_QUERY_POSITION: ++ res = gst_live_adder_query_position (adder, query); ++ break; ++ default: ++ res = gst_pad_query_default (pad, query); ++ break; ++ } ++ ++ gst_object_unref (adder); ++ ++ return res; ++} ++ ++static gboolean ++forward_event_func (GstPad * pad, GValue * ret, GstEvent * event) ++{ ++ gst_event_ref (event); ++ GST_LOG_OBJECT (pad, "About to send event %s", GST_EVENT_TYPE_NAME (event)); ++ if (!gst_pad_push_event (pad, event)) { ++ g_value_set_boolean (ret, FALSE); ++ GST_WARNING_OBJECT (pad, "Sending event %p (%s) failed.", ++ event, GST_EVENT_TYPE_NAME (event)); ++ } else { ++ GST_LOG_OBJECT (pad, "Sent event %p (%s).", ++ event, GST_EVENT_TYPE_NAME (event)); ++ } ++ ++ /* unref the pad because of a FIXME in gst_iterator_unfold ++ * it does a gst_iterator_next which refs the pad, but it never unrefs it ++ */ ++ gst_object_unref (pad); ++ return TRUE; ++} ++ ++/* forwards the event to all sinkpads, takes ownership of the ++ * event ++ * ++ * Returns: TRUE if the event could be forwarded on all ++ * sinkpads. ++ */ ++static gboolean ++forward_event (GstLiveAdder * adder, GstEvent * event) ++{ ++ gboolean ret; ++ GstIterator *it; ++ GValue vret = { 0 }; ++ ++ GST_LOG_OBJECT (adder, "Forwarding event %p (%s)", event, ++ GST_EVENT_TYPE_NAME (event)); ++ ++ ret = TRUE; ++ ++ g_value_init (&vret, G_TYPE_BOOLEAN); ++ g_value_set_boolean (&vret, TRUE); ++ it = gst_element_iterate_sink_pads (GST_ELEMENT_CAST (adder)); ++ gst_iterator_fold (it, (GstIteratorFoldFunction) forward_event_func, &vret, ++ event); ++ gst_iterator_free (it); ++ ++ ret = g_value_get_boolean (&vret); ++ ++ return ret; ++} ++ ++ ++static gboolean ++gst_live_adder_src_event (GstPad * pad, GstEvent * event) ++{ ++ GstLiveAdder *adder; ++ gboolean result; ++ ++ adder = GST_LIVE_ADDER (gst_pad_get_parent (pad)); ++ ++ switch (GST_EVENT_TYPE (event)) { ++ case GST_EVENT_QOS: ++ /* TODO : QoS might be tricky */ ++ result = FALSE; ++ break; ++ case GST_EVENT_NAVIGATION: ++ /* TODO : navigation is rather pointless. */ ++ result = FALSE; ++ break; ++ default: ++ /* just forward the rest for now */ ++ result = forward_event (adder, event); ++ break; ++ } ++ ++ gst_event_unref (event); ++ gst_object_unref (adder); ++ ++ return result; ++} ++ ++static guint ++gst_live_adder_length_from_duration (GstLiveAdder * adder, ++ GstClockTime duration) ++{ ++ guint64 ret = (duration * adder->rate / GST_SECOND) * adder->bps; ++ ++ return (guint) ret; ++} ++ ++static GstFlowReturn ++gst_live_live_adder_chain (GstPad * pad, GstBuffer * buffer) ++{ ++ GstLiveAdder *adder = GST_LIVE_ADDER (gst_pad_get_parent_element (pad)); ++ GstLiveAdderPadPrivate *padprivate = NULL; ++ GstFlowReturn ret = GST_FLOW_OK; ++ GList *item = NULL; ++ GstClockTime skip = 0; ++ gint64 drift = 0; /* Positive if new buffer after old buffer */ ++ ++ GST_OBJECT_LOCK (adder); ++ ++ ret = adder->srcresult; ++ ++ GST_DEBUG ("Incoming buffer time:%" GST_TIME_FORMAT " duration:%" ++ GST_TIME_FORMAT, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)), ++ GST_TIME_ARGS (GST_BUFFER_DURATION (buffer))); ++ ++ if (ret != GST_FLOW_OK) { ++ GST_DEBUG_OBJECT (adder, "Passing non-ok result from src: %s", ++ gst_flow_get_name (ret)); ++ gst_buffer_unref (buffer); ++ goto out; ++ } ++ ++ padprivate = gst_pad_get_element_private (pad); ++ ++ if (!padprivate) { ++ ret = GST_FLOW_NOT_LINKED; ++ gst_buffer_unref (buffer); ++ goto out; ++ } ++ ++ if (padprivate->eos) { ++ GST_DEBUG_OBJECT (adder, "Received buffer after EOS"); ++ ret = GST_FLOW_UNEXPECTED; ++ gst_buffer_unref (buffer); ++ goto out; ++ } ++ ++ if (!GST_BUFFER_TIMESTAMP_IS_VALID (buffer)) ++ goto invalid_timestamp; ++ ++ if (padprivate->segment.format == GST_FORMAT_UNDEFINED) { ++ GST_WARNING_OBJECT (adder, "No new-segment received," ++ " initializing segment with time 0..-1"); ++ gst_segment_init (&padprivate->segment, GST_FORMAT_TIME); ++ gst_segment_set_newsegment (&padprivate->segment, ++ FALSE, 1.0, GST_FORMAT_TIME, 0, -1, 0); ++ } ++ ++ if (padprivate->segment.format != GST_FORMAT_TIME) ++ goto invalid_segment; ++ ++ buffer = gst_buffer_make_metadata_writable (buffer); ++ ++ drift = GST_BUFFER_TIMESTAMP (buffer) - padprivate->expected_timestamp; ++ ++ /* Just see if we receive invalid timestamp/durations */ ++ if (GST_CLOCK_TIME_IS_VALID (padprivate->expected_timestamp) && ++ !GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT) && ++ (drift != 0)) { ++ GST_LOG_OBJECT (adder, ++ "Timestamp discontinuity without the DISCONT flag set" ++ " (expected %" GST_TIME_FORMAT ", got %" GST_TIME_FORMAT ++ " drift:%" G_GINT64_FORMAT "ms)", ++ GST_TIME_ARGS (padprivate->expected_timestamp), ++ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)), drift / GST_MSECOND); ++ ++ /* We accept drifts of 10ms */ ++ if (ABS (drift) < (10 * GST_MSECOND)) { ++ GST_DEBUG ("Correcting minor drift"); ++ GST_BUFFER_TIMESTAMP (buffer) = padprivate->expected_timestamp; ++ } ++ } ++ ++ ++ /* If there is no duration, lets set one */ ++ if (!GST_BUFFER_DURATION_IS_VALID (buffer)) { ++ GST_BUFFER_DURATION (buffer) = ++ gst_audio_duration_from_pad_buffer (pad, buffer); ++ padprivate->expected_timestamp = GST_CLOCK_TIME_NONE; ++ } else { ++ padprivate->expected_timestamp = GST_BUFFER_TIMESTAMP (buffer) + ++ GST_BUFFER_DURATION (buffer); ++ } ++ ++ ++ /* ++ * Lets clip the buffer to the segment (so we don't have to worry about ++ * cliping afterwards). ++ * This should also guarantee us that we'll have valid timestamps and ++ * durations afterwards ++ */ ++ ++ buffer = gst_audio_buffer_clip (buffer, &padprivate->segment, adder->rate, ++ adder->bps); ++ ++ /* buffer can be NULL if it's completely outside of the segment */ ++ if (!buffer) { ++ GST_DEBUG ("Buffer completely outside of configured segment, dropping it"); ++ goto out; ++ } ++ ++ /* ++ * Make sure all incoming buffers share the same timestamping ++ */ ++ GST_BUFFER_TIMESTAMP (buffer) = ++ gst_segment_to_running_time (&padprivate->segment, ++ padprivate->segment.format, GST_BUFFER_TIMESTAMP (buffer)); ++ ++ ++ if (GST_CLOCK_TIME_IS_VALID (adder->next_timestamp) && ++ GST_BUFFER_TIMESTAMP (buffer) < adder->next_timestamp) { ++ if (GST_BUFFER_TIMESTAMP (buffer) + GST_BUFFER_DURATION (buffer) < ++ adder->next_timestamp) { ++ GST_DEBUG_OBJECT (adder, "Buffer is late, dropping (ts: %" GST_TIME_FORMAT ++ " duration: %" GST_TIME_FORMAT ")", ++ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)), ++ GST_TIME_ARGS (GST_BUFFER_DURATION (buffer))); ++ gst_buffer_unref (buffer); ++ goto out; ++ } else { ++ skip = adder->next_timestamp - GST_BUFFER_TIMESTAMP (buffer); ++ GST_DEBUG_OBJECT (adder, "Buffer is partially late, skipping %" ++ GST_TIME_FORMAT, GST_TIME_ARGS (skip)); ++ } ++ } ++ ++ /* If our new buffer's head is higher than the queue's head, lets wake up, ++ * we may not have to wait for as long ++ */ ++ if (adder->clock_id && ++ g_queue_peek_head (adder->buffers) != NULL && ++ GST_BUFFER_TIMESTAMP (buffer) + skip < ++ GST_BUFFER_TIMESTAMP (g_queue_peek_head (adder->buffers))) ++ gst_clock_id_unschedule (adder->clock_id); ++ ++ for (item = g_queue_peek_head_link (adder->buffers); ++ item; item = g_list_next (item)) { ++ GstBuffer *oldbuffer = item->data; ++ GstClockTime old_skip = 0; ++ GstClockTime mix_duration = 0; ++ GstClockTime mix_start = 0; ++ GstClockTime mix_end = 0; ++ ++ /* We haven't reached our place yet */ ++ if (GST_BUFFER_TIMESTAMP (buffer) + skip >= ++ GST_BUFFER_TIMESTAMP (oldbuffer) + GST_BUFFER_DURATION (oldbuffer)) ++ continue; ++ ++ /* We're past our place, lets insert ouselves here */ ++ if (GST_BUFFER_TIMESTAMP (buffer) + GST_BUFFER_DURATION (buffer) <= ++ GST_BUFFER_TIMESTAMP (oldbuffer)) ++ break; ++ ++ /* if we reach this spot, we have overlap, so we must mix */ ++ ++ /* First make a subbuffer with the non-overlapping part */ ++ if (GST_BUFFER_TIMESTAMP (buffer) + skip < GST_BUFFER_TIMESTAMP (oldbuffer)) { ++ GstBuffer *subbuffer = NULL; ++ GstClockTime subbuffer_duration = GST_BUFFER_TIMESTAMP (oldbuffer) - ++ (GST_BUFFER_TIMESTAMP (buffer) + skip); ++ ++ subbuffer = gst_buffer_create_sub (buffer, ++ gst_live_adder_length_from_duration (adder, skip), ++ gst_live_adder_length_from_duration (adder, subbuffer_duration)); ++ ++ GST_BUFFER_TIMESTAMP (subbuffer) = GST_BUFFER_TIMESTAMP (buffer) + skip; ++ GST_BUFFER_DURATION (subbuffer) = subbuffer_duration; ++ ++ skip += subbuffer_duration; ++ ++ g_queue_insert_before (adder->buffers, item, subbuffer); ++ } ++ ++ /* Now we are on the overlapping part */ ++ oldbuffer = gst_buffer_make_writable (oldbuffer); ++ item->data = oldbuffer; ++ ++ old_skip = GST_BUFFER_TIMESTAMP (buffer) + skip - ++ GST_BUFFER_TIMESTAMP (oldbuffer); ++ ++ mix_start = GST_BUFFER_TIMESTAMP (oldbuffer) + old_skip; ++ ++ if (GST_BUFFER_TIMESTAMP (buffer) + GST_BUFFER_DURATION (buffer) < ++ GST_BUFFER_TIMESTAMP (oldbuffer) + GST_BUFFER_DURATION (oldbuffer)) ++ mix_end = GST_BUFFER_TIMESTAMP (buffer) + GST_BUFFER_DURATION (buffer); ++ else ++ mix_end = GST_BUFFER_TIMESTAMP (oldbuffer) + ++ GST_BUFFER_DURATION (oldbuffer); ++ ++ mix_duration = mix_end - mix_start; ++ ++ adder->func (GST_BUFFER_DATA (oldbuffer) + ++ gst_live_adder_length_from_duration (adder, old_skip), ++ GST_BUFFER_DATA (buffer) + ++ gst_live_adder_length_from_duration (adder, skip), ++ gst_live_adder_length_from_duration (adder, mix_duration)); ++ ++ skip += mix_duration; ++ } ++ ++ g_cond_broadcast (adder->not_empty_cond); ++ ++ if (skip == GST_BUFFER_DURATION (buffer)) { ++ gst_buffer_unref (buffer); ++ } else { ++ if (skip) { ++ GstClockTime subbuffer_duration = GST_BUFFER_DURATION (buffer) - skip; ++ GstClockTime subbuffer_ts = GST_BUFFER_TIMESTAMP (buffer) + skip; ++ ++ buffer = gst_buffer_create_sub (buffer, ++ gst_live_adder_length_from_duration (adder, skip), ++ gst_live_adder_length_from_duration (adder, subbuffer_duration)); ++ GST_BUFFER_TIMESTAMP (buffer) = subbuffer_ts; ++ GST_BUFFER_DURATION (buffer) = subbuffer_duration; ++ } ++ ++ if (item) ++ g_queue_insert_before (adder->buffers, item, buffer); ++ else ++ g_queue_push_tail (adder->buffers, buffer); ++ } ++ ++out: ++ ++ GST_OBJECT_UNLOCK (adder); ++ gst_object_unref (adder); ++ ++ return ret; ++ ++invalid_timestamp: ++ ++ GST_OBJECT_UNLOCK (adder); ++ gst_buffer_unref (buffer); ++ GST_ELEMENT_ERROR (adder, STREAM, FAILED, ++ ("Buffer without a valid timestamp received"), ++ ("Invalid timestamp received on buffer")); ++ ++ return GST_FLOW_ERROR; ++ ++invalid_segment: ++ { ++ const gchar *format = gst_format_get_name (padprivate->segment.format); ++ GST_OBJECT_UNLOCK (adder); ++ gst_buffer_unref (buffer); ++ GST_ELEMENT_ERROR (adder, STREAM, FAILED, ++ ("This element only supports TIME segments, received other type"), ++ ("Received a segment of type %s, only support time segment", format)); ++ ++ return GST_FLOW_ERROR; ++ } ++ ++} ++ ++/* ++ * This only works because the GstObject lock is taken ++ * ++ * It checks if all sink pads are EOS ++ */ ++static gboolean ++check_eos_locked (GstLiveAdder * adder) ++{ ++ GList *item; ++ ++ /* We can't be EOS if we have no sinkpads */ ++ if (adder->sinkpads == NULL) ++ return FALSE; ++ ++ for (item = adder->sinkpads; item; item = g_list_next (item)) { ++ GstPad *pad = item->data; ++ GstLiveAdderPadPrivate *padprivate = gst_pad_get_element_private (pad); ++ ++ if (padprivate && padprivate->eos != TRUE) ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++static void ++gst_live_adder_loop (gpointer data) ++{ ++ GstLiveAdder *adder = GST_LIVE_ADDER (data); ++ GstClockTime buffer_timestamp = 0; ++ GstClockTime sync_time = 0; ++ GstClock *clock = NULL; ++ GstClockID id = NULL; ++ GstClockReturn ret; ++ GstBuffer *buffer = NULL; ++ GstFlowReturn result; ++ GstEvent *newseg_event = NULL; ++ ++ GST_OBJECT_LOCK (adder); ++ ++again: ++ ++ for (;;) { ++ if (adder->srcresult != GST_FLOW_OK) ++ goto flushing; ++ if (!g_queue_is_empty (adder->buffers)) ++ break; ++ if (check_eos_locked (adder)) ++ goto eos; ++ g_cond_wait (adder->not_empty_cond, GST_OBJECT_GET_LOCK (adder)); ++ } ++ ++ buffer_timestamp = GST_BUFFER_TIMESTAMP (g_queue_peek_head (adder->buffers)); ++ ++ clock = GST_ELEMENT_CLOCK (adder); ++ ++ /* If we have no clock, then we can't do anything.. error */ ++ if (!clock) { ++ if (adder->playing) ++ goto no_clock; ++ else ++ goto push_buffer; ++ } ++ ++ GST_DEBUG_OBJECT (adder, "sync to timestamp %" GST_TIME_FORMAT, ++ GST_TIME_ARGS (buffer_timestamp)); ++ ++ sync_time = buffer_timestamp + GST_ELEMENT_CAST (adder)->base_time; ++ /* add latency, this includes our own latency and the peer latency. */ ++ sync_time += adder->latency_ms * GST_MSECOND; ++ sync_time += adder->peer_latency; ++ ++ /* create an entry for the clock */ ++ id = adder->clock_id = gst_clock_new_single_shot_id (clock, sync_time); ++ GST_OBJECT_UNLOCK (adder); ++ ++ ret = gst_clock_id_wait (id, NULL); ++ ++ GST_OBJECT_LOCK (adder); ++ ++ /* and free the entry */ ++ gst_clock_id_unref (id); ++ adder->clock_id = NULL; ++ ++ /* at this point, the clock could have been unlocked by a timeout, a new ++ * head element was added to the queue or because we are shutting down. Check ++ * for shutdown first. */ ++ ++ if (adder->srcresult != GST_FLOW_OK) ++ goto flushing; ++ ++ if (ret == GST_CLOCK_UNSCHEDULED) { ++ GST_DEBUG_OBJECT (adder, ++ "Wait got unscheduled, will retry to push with new buffer"); ++ goto again; ++ } ++ ++ if (ret != GST_CLOCK_OK && ret != GST_CLOCK_EARLY) ++ goto clock_error; ++ ++push_buffer: ++ ++ buffer = g_queue_pop_head (adder->buffers); ++ ++ if (!buffer) ++ goto again; ++ ++ /* ++ * We make sure the timestamps are exactly contiguous ++ * If its only small skew (due to rounding errors), we correct it ++ * silently. Otherwise we put the discont flag ++ */ ++ if (GST_CLOCK_TIME_IS_VALID (adder->next_timestamp) && ++ GST_BUFFER_TIMESTAMP (buffer) != adder->next_timestamp) { ++ GstClockTimeDiff diff = GST_CLOCK_DIFF (GST_BUFFER_TIMESTAMP (buffer), ++ adder->next_timestamp); ++ if (diff < 0) ++ diff = -diff; ++ ++ if (diff < GST_SECOND / adder->rate) { ++ GST_BUFFER_TIMESTAMP (buffer) = adder->next_timestamp; ++ GST_DEBUG_OBJECT (adder, "Correcting slight skew"); ++ GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DISCONT); ++ } else { ++ GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT); ++ GST_DEBUG_OBJECT (adder, "Expected buffer at %" GST_TIME_FORMAT ++ ", but is at %" GST_TIME_FORMAT ", setting discont", ++ GST_TIME_ARGS (adder->next_timestamp), ++ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer))); ++ } ++ } else { ++ GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DISCONT); ++ } ++ ++ GST_BUFFER_OFFSET (buffer) = GST_BUFFER_OFFSET_NONE; ++ GST_BUFFER_OFFSET_END (buffer) = GST_BUFFER_OFFSET_NONE; ++ ++ if (GST_BUFFER_DURATION_IS_VALID (buffer)) ++ adder->next_timestamp = GST_BUFFER_TIMESTAMP (buffer) + ++ GST_BUFFER_DURATION (buffer); ++ else ++ adder->next_timestamp = GST_CLOCK_TIME_NONE; ++ ++ if (adder->segment_pending) { ++ /* ++ * We set the start at 0, because we re-timestamps to the running time ++ */ ++ newseg_event = gst_event_new_new_segment_full (FALSE, 1.0, 1.0, ++ GST_FORMAT_TIME, 0, -1, 0); ++ ++ adder->segment_pending = FALSE; ++ } ++ ++ GST_OBJECT_UNLOCK (adder); ++ ++ if (newseg_event) ++ gst_pad_push_event (adder->srcpad, newseg_event); ++ ++ GST_LOG_OBJECT (adder, "About to push buffer time:%" GST_TIME_FORMAT ++ " duration:%" GST_TIME_FORMAT, ++ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)), ++ GST_TIME_ARGS (GST_BUFFER_DURATION (buffer))); ++ ++ result = gst_pad_push (adder->srcpad, buffer); ++ if (result != GST_FLOW_OK) ++ goto pause; ++ ++ return; ++ ++flushing: ++ { ++ GST_DEBUG_OBJECT (adder, "we are flushing"); ++ gst_pad_pause_task (adder->srcpad); ++ GST_OBJECT_UNLOCK (adder); ++ return; ++ } ++ ++clock_error: ++ { ++ gst_pad_pause_task (adder->srcpad); ++ GST_OBJECT_UNLOCK (adder); ++ GST_ELEMENT_ERROR (adder, STREAM, MUX, ("Error with the clock"), ++ ("Error with the clock: %d", ret)); ++ GST_ERROR_OBJECT (adder, "Error with the clock: %d", ret); ++ return; ++ } ++ ++no_clock: ++ { ++ gst_pad_pause_task (adder->srcpad); ++ GST_OBJECT_UNLOCK (adder); ++ GST_ELEMENT_ERROR (adder, STREAM, MUX, ("No available clock"), ++ ("No available clock")); ++ GST_ERROR_OBJECT (adder, "No available clock"); ++ return; ++ } ++ ++pause: ++ { ++ GST_DEBUG_OBJECT (adder, "pausing task, reason %s", ++ gst_flow_get_name (result)); ++ ++ GST_OBJECT_LOCK (adder); ++ ++ /* store result */ ++ adder->srcresult = result; ++ /* we don't post errors or anything because upstream will do that for us ++ * when we pass the return value upstream. */ ++ gst_pad_pause_task (adder->srcpad); ++ GST_OBJECT_UNLOCK (adder); ++ return; ++ } ++ ++eos: ++ { ++ /* store result, we are flushing now */ ++ GST_DEBUG_OBJECT (adder, "We are EOS, pushing EOS downstream"); ++ adder->srcresult = GST_FLOW_UNEXPECTED; ++ gst_pad_pause_task (adder->srcpad); ++ GST_OBJECT_UNLOCK (adder); ++ gst_pad_push_event (adder->srcpad, gst_event_new_eos ()); ++ return; ++ } ++} ++ ++static GstPad * ++gst_live_adder_request_new_pad (GstElement * element, GstPadTemplate * templ, ++ const gchar * unused) ++{ ++ gchar *name; ++ GstLiveAdder *adder; ++ GstPad *newpad; ++ gint padcount; ++ GstLiveAdderPadPrivate *padprivate = NULL; ++ ++ if (templ->direction != GST_PAD_SINK) ++ goto not_sink; ++ ++ adder = GST_LIVE_ADDER (element); ++ ++ /* increment pad counter */ ++ padcount = g_atomic_int_exchange_and_add (&adder->padcount, 1); ++ ++ name = g_strdup_printf ("sink%d", padcount); ++ newpad = gst_pad_new_from_template (templ, name); ++ GST_DEBUG_OBJECT (adder, "request new pad %s", name); ++ g_free (name); ++ ++ gst_pad_set_getcaps_function (newpad, ++ GST_DEBUG_FUNCPTR (gst_live_adder_sink_getcaps)); ++ gst_pad_set_setcaps_function (newpad, ++ GST_DEBUG_FUNCPTR (gst_live_adder_setcaps)); ++ gst_pad_set_event_function (newpad, ++ GST_DEBUG_FUNCPTR (gst_live_adder_sink_event)); ++ ++ padprivate = g_new0 (GstLiveAdderPadPrivate, 1); ++ ++ gst_segment_init (&padprivate->segment, GST_FORMAT_UNDEFINED); ++ padprivate->eos = FALSE; ++ padprivate->expected_timestamp = GST_CLOCK_TIME_NONE; ++ ++ gst_pad_set_element_private (newpad, padprivate); ++ ++ gst_pad_set_chain_function (newpad, gst_live_live_adder_chain); ++ ++ ++ if (!gst_pad_set_active (newpad, TRUE)) ++ goto could_not_activate; ++ ++ /* takes ownership of the pad */ ++ if (!gst_element_add_pad (GST_ELEMENT (adder), newpad)) ++ goto could_not_add; ++ ++ GST_OBJECT_LOCK (adder); ++ adder->sinkpads = g_list_prepend (adder->sinkpads, newpad); ++ GST_OBJECT_UNLOCK (adder); ++ ++ return newpad; ++ ++ /* errors */ ++not_sink: ++ { ++ g_warning ("gstadder: request new pad that is not a SINK pad\n"); ++ return NULL; ++ } ++could_not_add: ++ { ++ GST_DEBUG_OBJECT (adder, "could not add pad"); ++ g_free (padprivate); ++ gst_object_unref (newpad); ++ return NULL; ++ } ++could_not_activate: ++ { ++ GST_DEBUG_OBJECT (adder, "could not activate new pad"); ++ g_free (padprivate); ++ gst_object_unref (newpad); ++ return NULL; ++ } ++} ++ ++static void ++gst_live_adder_release_pad (GstElement * element, GstPad * pad) ++{ ++ GstLiveAdder *adder; ++ GstLiveAdderPadPrivate *padprivate; ++ ++ adder = GST_LIVE_ADDER (element); ++ ++ GST_DEBUG_OBJECT (adder, "release pad %s:%s", GST_DEBUG_PAD_NAME (pad)); ++ ++ GST_OBJECT_LOCK (element); ++ padprivate = gst_pad_get_element_private (pad); ++ gst_pad_set_element_private (pad, NULL); ++ adder->sinkpads = g_list_remove_all (adder->sinkpads, pad); ++ GST_OBJECT_UNLOCK (element); ++ ++ g_free (padprivate); ++ ++ gst_element_remove_pad (element, pad); ++} ++ ++static void ++reset_pad_private (GstPad * pad) ++{ ++ GstLiveAdderPadPrivate *padprivate; ++ ++ padprivate = gst_pad_get_element_private (pad); ++ ++ if (!padprivate) ++ return; ++ ++ gst_segment_init (&padprivate->segment, GST_FORMAT_UNDEFINED); ++ ++ padprivate->expected_timestamp = GST_CLOCK_TIME_NONE; ++ padprivate->eos = FALSE; ++} ++ ++static GstStateChangeReturn ++gst_live_adder_change_state (GstElement * element, GstStateChange transition) ++{ ++ GstLiveAdder *adder; ++ GstStateChangeReturn ret; ++ ++ adder = GST_LIVE_ADDER (element); ++ ++ switch (transition) { ++ case GST_STATE_CHANGE_READY_TO_PAUSED: ++ GST_OBJECT_LOCK (adder); ++ adder->segment_pending = TRUE; ++ adder->peer_latency = 0; ++ adder->next_timestamp = GST_CLOCK_TIME_NONE; ++ g_list_foreach (adder->sinkpads, (GFunc) reset_pad_private, NULL); ++ GST_OBJECT_UNLOCK (adder); ++ break; ++ case GST_STATE_CHANGE_PLAYING_TO_PAUSED: ++ GST_OBJECT_LOCK (adder); ++ adder->playing = FALSE; ++ GST_OBJECT_UNLOCK (adder); ++ break; ++ default: ++ break; ++ } ++ ++ ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); ++ ++ switch (transition) { ++ case GST_STATE_CHANGE_PAUSED_TO_PLAYING: ++ GST_OBJECT_LOCK (adder); ++ adder->playing = TRUE; ++ GST_OBJECT_UNLOCK (adder); ++ break; ++ default: ++ break; ++ } ++ ++ return ret; ++} ++ ++ ++static gboolean ++plugin_init (GstPlugin * plugin) ++{ ++ if (!gst_element_register (plugin, "liveadder", GST_RANK_NONE, ++ GST_TYPE_LIVE_ADDER)) { ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, ++ GST_VERSION_MINOR, ++ "liveadder", ++ "Adds multiple live discontinuous streams", ++ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN) +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/liveadder/liveadder.h gst-plugins-good0.10-0.10.23/farsight/liveadder/liveadder.h +--- gst-plugins-good0.10-0.10.23.ori/farsight/liveadder/liveadder.h 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/liveadder/liveadder.h 2009-05-21 14:46:27.000000000 -0400 +@@ -0,0 +1,108 @@ ++/* ++ * Farsight Voice+Video library ++ * ++ * Copyright 2008 Collabora Ltd ++ * Copyright 2008 Nokia Corporation ++ * @author: Olivier Crete ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ * ++ */ ++ ++ ++ ++#ifndef __GST_LIVE_ADDER_H__ ++#define __GST_LIVE_ADDER_H__ ++ ++#include ++ ++G_BEGIN_DECLS ++#define GST_TYPE_LIVE_ADDER (gst_live_adder_get_type()) ++#define GST_LIVE_ADDER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_LIVE_ADDER,GstLiveAdder)) ++#define GST_IS_LIVE_ADDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_LIVE_ADDER)) ++#define GST_LIVE_ADDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_LIVE_ADDER,GstLiveAdderClass)) ++#define GST_IS_LIVE_ADDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_LIVE_ADDER)) ++#define GST_LIVE_ADDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_LIVE_ADDER,GstLiveAdderClass)) ++typedef struct _GstLiveAdder GstLiveAdder; ++typedef struct _GstLiveAdderClass GstLiveAdderClass; ++ ++typedef enum ++{ ++ GST_LIVE_ADDER_FORMAT_UNSET, ++ GST_LIVE_ADDER_FORMAT_INT, ++ GST_LIVE_ADDER_FORMAT_FLOAT ++} GstLiveAdderFormat; ++ ++typedef void (*GstLiveAdderFunction) (gpointer out, gpointer in, guint size); ++ ++/** ++ * GstLiveAdder: ++ * ++ * The adder object structure. ++ */ ++struct _GstLiveAdder ++{ ++ /*< private >*/ ++ GstElement element; ++ ++ GstPad *srcpad; ++ /* pad counter, used for creating unique request pads */ ++ gint padcount; ++ GList *sinkpads; ++ ++ GstFlowReturn srcresult; ++ GstClockID clock_id; ++ ++ /* the queue is ordered head to tail */ ++ GQueue *buffers; ++ GCond *not_empty_cond; ++ ++ GstClockTime next_timestamp; ++ ++ /* the next are valid for both int and float */ ++ GstLiveAdderFormat format; ++ gint rate; ++ gint channels; ++ gint width; ++ gint endianness; ++ ++ /* the next are valid only for format == GST_LIVE_ADDER_FORMAT_INT */ ++ gint depth; ++ gboolean is_signed; ++ ++ /* number of bytes per sample, actually width/8 * channels */ ++ gint bps; ++ ++ /* function to add samples */ ++ GstLiveAdderFunction func; ++ ++ GstClockTime latency_ms; ++ GstClockTime peer_latency; ++ ++ gboolean segment_pending; ++ ++ gboolean playing; ++}; ++ ++struct _GstLiveAdderClass ++{ ++ GstElementClass parent_class; ++}; ++ ++GType gst_live_adder_get_type (void); ++ ++G_END_DECLS ++#endif /* __GST_LIVE_ADDER_H__ */ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/liveadder/Makefile.am gst-plugins-good0.10-0.10.23/farsight/liveadder/Makefile.am +--- gst-plugins-good0.10-0.10.23.ori/farsight/liveadder/Makefile.am 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/liveadder/Makefile.am 2009-11-22 14:16:54.000000000 -0500 +@@ -0,0 +1,11 @@ ++plugin_LTLIBRARIES = libgstliveadder.la ++ ++libgstliveadder_la_SOURCES = liveadder.c ++libgstliveadder_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) ++libgstliveadder_la_LIBADD = \ ++ $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_MAJORMINOR@ \ ++ $(GST_BASE_LIBS) $(GST_LIBS) ++libgstliveadder_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) ++libgstliveadder_la_LIBTOOLFLAGS = --tag=disable-static ++ ++noinst_HEADERS = liveadder.h +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/liveadder/Makefile.in gst-plugins-good0.10-0.10.23/farsight/liveadder/Makefile.in +--- gst-plugins-good0.10-0.10.23.ori/farsight/liveadder/Makefile.in 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/liveadder/Makefile.in 2010-03-05 20:28:37.000000000 -0500 +@@ -0,0 +1,824 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# @configure_input@ ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++@SET_MAKE@ ++ ++ ++VPATH = @srcdir@ ++pkgdatadir = $(datadir)/@PACKAGE@ ++pkgincludedir = $(includedir)/@PACKAGE@ ++pkglibdir = $(libdir)/@PACKAGE@ ++pkglibexecdir = $(libexecdir)/@PACKAGE@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = @build@ ++host_triplet = @host@ ++subdir = gst/liveadder ++DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ ++ $(top_srcdir)/common/m4/as-auto-alt.m4 \ ++ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ ++ $(top_srcdir)/common/m4/as-objc.m4 \ ++ $(top_srcdir)/common/m4/as-python.m4 \ ++ $(top_srcdir)/common/m4/as-scrub-include.m4 \ ++ $(top_srcdir)/common/m4/as-version.m4 \ ++ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ ++ $(top_srcdir)/common/m4/gst-arch.m4 \ ++ $(top_srcdir)/common/m4/gst-args.m4 \ ++ $(top_srcdir)/common/m4/gst-check.m4 \ ++ $(top_srcdir)/common/m4/gst-default.m4 \ ++ $(top_srcdir)/common/m4/gst-dowhile.m4 \ ++ $(top_srcdir)/common/m4/gst-error.m4 \ ++ $(top_srcdir)/common/m4/gst-feature.m4 \ ++ $(top_srcdir)/common/m4/gst-gettext.m4 \ ++ $(top_srcdir)/common/m4/gst-glib2.m4 \ ++ $(top_srcdir)/common/m4/gst-platform.m4 \ ++ $(top_srcdir)/common/m4/gst-plugin-docs.m4 \ ++ $(top_srcdir)/common/m4/gst-plugindir.m4 \ ++ $(top_srcdir)/common/m4/gst-x11.m4 \ ++ $(top_srcdir)/common/m4/gst.m4 \ ++ $(top_srcdir)/common/m4/gtk-doc.m4 \ ++ $(top_srcdir)/common/m4/pkg.m4 \ ++ $(top_srcdir)/common/m4/shave.m4 $(top_srcdir)/m4/gettext.m4 \ ++ $(top_srcdir)/m4/gst-alsa.m4 $(top_srcdir)/m4/gst-fionread.m4 \ ++ $(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \ ++ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ ++ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ ++ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ ++ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ ++ $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(install_sh) -d ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; ++am__install_max = 40 ++am__nobase_strip_setup = \ ++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` ++am__nobase_strip = \ ++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" ++am__nobase_list = $(am__nobase_strip_setup); \ ++ for p in $$list; do echo "$$p $$p"; done | \ ++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ ++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ ++ if (++n[$$2] == $(am__install_max)) \ ++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ ++ END { for (dir in files) print dir, files[dir] }' ++am__base_list = \ ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++am__installdirs = "$(DESTDIR)$(plugindir)" ++LTLIBRARIES = $(plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++libgstliveadder_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) ++am_libgstliveadder_la_OBJECTS = libgstliveadder_la-liveadder.lo ++libgstliveadder_la_OBJECTS = $(am_libgstliveadder_la_OBJECTS) ++libgstliveadder_la_LINK = $(LIBTOOL) --tag=CC \ ++ $(libgstliveadder_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ ++ $(CCLD) $(libgstliveadder_la_CFLAGS) $(CFLAGS) \ ++ $(libgstliveadder_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(libgstliveadder_la_SOURCES) ++DIST_SOURCES = $(libgstliveadder_la_SOURCES) ++HEADERS = $(noinst_HEADERS) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ ++ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ++ACMENC_CFLAGS = @ACMENC_CFLAGS@ ++ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@ ++ALSA_CFLAGS = @ALSA_CFLAGS@ ++ALSA_LIBS = @ALSA_LIBS@ ++AMRWB_LIBS = @AMRWB_LIBS@ ++AMTAR = @AMTAR@ ++AM_MAKEFLAGS = @AM_MAKEFLAGS@ ++APEXSINK_CFLAGS = @APEXSINK_CFLAGS@ ++APEXSINK_LIBS = @APEXSINK_LIBS@ ++AR = @AR@ ++AS = @AS@ ++ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@ ++ASSRENDER_LIBS = @ASSRENDER_LIBS@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ ++AWK = @AWK@ ++BZ2_LIBS = @BZ2_LIBS@ ++CC = @CC@ ++CCASFLAGS = @CCASFLAGS@ ++CCDEPMODE = @CCDEPMODE@ ++CDAUDIO_CFLAGS = @CDAUDIO_CFLAGS@ ++CDAUDIO_CONFIG = @CDAUDIO_CONFIG@ ++CDAUDIO_LIBS = @CDAUDIO_LIBS@ ++CELT_0_5_CFLAGS = @CELT_0_5_CFLAGS@ ++CELT_0_5_LIBS = @CELT_0_5_LIBS@ ++CELT_0_7_CFLAGS = @CELT_0_7_CFLAGS@ ++CELT_0_7_LIBS = @CELT_0_7_LIBS@ ++CELT_CFLAGS = @CELT_CFLAGS@ ++CELT_LIBS = @CELT_LIBS@ ++CFLAGS = @CFLAGS@ ++COG_CFLAGS = @COG_CFLAGS@ ++COG_LIBS = @COG_LIBS@ ++CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ ++CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DCCP_LIBS = @DCCP_LIBS@ ++DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@ ++DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@ ++DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@ ++DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@ ++DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@ ++DEFS = @DEFS@ ++DEPDIR = @DEPDIR@ ++DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@ ++DIRAC_CFLAGS = @DIRAC_CFLAGS@ ++DIRAC_LIBS = @DIRAC_LIBS@ ++DIRECTDRAW_LIBS = @DIRECTDRAW_LIBS@ ++DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ ++DIRECTFB_LIBS = @DIRECTFB_LIBS@ ++DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@ ++DIRECTX_CFLAGS = @DIRECTX_CFLAGS@ ++DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@ ++DIVXDEC_LIBS = @DIVXDEC_LIBS@ ++DIVXENC_LIBS = @DIVXENC_LIBS@ ++DLLTOOL = @DLLTOOL@ ++DSYMUTIL = @DSYMUTIL@ ++DTS_LIBS = @DTS_LIBS@ ++DUMPBIN = @DUMPBIN@ ++DVDNAV_CFLAGS = @DVDNAV_CFLAGS@ ++DVDNAV_CONFIG = @DVDNAV_CONFIG@ ++DVDNAV_LIBS = @DVDNAV_LIBS@ ++ECHO_C = @ECHO_C@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ ++ERROR_CFLAGS = @ERROR_CFLAGS@ ++ERROR_CXXFLAGS = @ERROR_CXXFLAGS@ ++EXEEXT = @EXEEXT@ ++EXIF_CFLAGS = @EXIF_CFLAGS@ ++EXIF_LIBS = @EXIF_LIBS@ ++F77 = @F77@ ++FAAC_LIBS = @FAAC_LIBS@ ++FAAD_IS_NEAAC = @FAAD_IS_NEAAC@ ++FAAD_LIBS = @FAAD_LIBS@ ++FC = @FC@ ++FFLAGS = @FFLAGS@ ++FGREP = @FGREP@ ++FLITE_CFLAGS = @FLITE_CFLAGS@ ++FLITE_LIBS = @FLITE_LIBS@ ++GCOV = @GCOV@ ++GCOV_CFLAGS = @GCOV_CFLAGS@ ++GCOV_LIBS = @GCOV_LIBS@ ++GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ ++GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ ++GIO_CFLAGS = @GIO_CFLAGS@ ++GIO_LIBS = @GIO_LIBS@ ++GLIB_CFLAGS = @GLIB_CFLAGS@ ++GLIB_LIBS = @GLIB_LIBS@ ++GLIB_PREFIX = @GLIB_PREFIX@ ++GLIB_REQ = @GLIB_REQ@ ++GME_LIBS = @GME_LIBS@ ++GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@ ++GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@ ++GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GMYTH_CFLAGS = @GMYTH_CFLAGS@ ++GMYTH_LIBS = @GMYTH_LIBS@ ++GREP = @GREP@ ++GSM_LIBS = @GSM_LIBS@ ++GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@ ++GSTPB_PREFIX = @GSTPB_PREFIX@ ++GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@ ++GST_BASE_CFLAGS = @GST_BASE_CFLAGS@ ++GST_BASE_LIBS = @GST_BASE_LIBS@ ++GST_CFLAGS = @GST_CFLAGS@ ++GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@ ++GST_CHECK_LIBS = @GST_CHECK_LIBS@ ++GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@ ++GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@ ++GST_CXXFLAGS = @GST_CXXFLAGS@ ++GST_GDP_CFLAGS = @GST_GDP_CFLAGS@ ++GST_GDP_LIBS = @GST_GDP_LIBS@ ++GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@ ++GST_LIBS = @GST_LIBS@ ++GST_LICENSE = @GST_LICENSE@ ++GST_MAJORMINOR = @GST_MAJORMINOR@ ++GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@ ++GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@ ++GST_PACKAGE_NAME = @GST_PACKAGE_NAME@ ++GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@ ++GST_PLUGINS_ALL = @GST_PLUGINS_ALL@ ++GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@ ++GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@ ++GST_PLUGINS_DIR = @GST_PLUGINS_DIR@ ++GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@ ++GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@ ++GST_PREFIX = @GST_PREFIX@ ++GST_TOOLS_DIR = @GST_TOOLS_DIR@ ++GTKDOC_CHECK = @GTKDOC_CHECK@ ++GTK_CFLAGS = @GTK_CFLAGS@ ++GTK_LIBS = @GTK_LIBS@ ++HAVE_AMRWB = @HAVE_AMRWB@ ++HAVE_BZ2 = @HAVE_BZ2@ ++HAVE_CXX = @HAVE_CXX@ ++HAVE_DIRECTDRAW = @HAVE_DIRECTDRAW@ ++HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@ ++HAVE_DTS = @HAVE_DTS@ ++HAVE_FAAC = @HAVE_FAAC@ ++HAVE_FAAD = @HAVE_FAAD@ ++HAVE_FLITE = @HAVE_FLITE@ ++HAVE_GSM = @HAVE_GSM@ ++HAVE_JP2K = @HAVE_JP2K@ ++HAVE_NAS = @HAVE_NAS@ ++HAVE_X = @HAVE_X@ ++HAVE_X11 = @HAVE_X11@ ++HTML_DIR = @HTML_DIR@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++INTLLIBS = @INTLLIBS@ ++INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ ++IPTC_CFLAGS = @IPTC_CFLAGS@ ++IPTC_LIBS = @IPTC_LIBS@ ++JACK_CFLAGS = @JACK_CFLAGS@ ++JACK_LIBS = @JACK_LIBS@ ++JP2K_LIBS = @JP2K_LIBS@ ++KATE_CFLAGS = @KATE_CFLAGS@ ++KATE_LIBS = @KATE_LIBS@ ++LD = @LD@ ++LDFLAGS = @LDFLAGS@ ++LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@ ++LIBDC1394_LIBS = @LIBDC1394_LIBS@ ++LIBDIR = @LIBDIR@ ++LIBICONV = @LIBICONV@ ++LIBINTL = @LIBINTL@ ++LIBM = @LIBM@ ++LIBMMS_CFLAGS = @LIBMMS_CFLAGS@ ++LIBMMS_LIBS = @LIBMMS_LIBS@ ++LIBOBJS = @LIBOBJS@ ++LIBOIL_CFLAGS = @LIBOIL_CFLAGS@ ++LIBOIL_LIBS = @LIBOIL_LIBS@ ++LIBS = @LIBS@ ++LIBTOOL = @LIBTOOL@ ++LIPO = @LIPO@ ++LN_S = @LN_S@ ++LOCALEDIR = @LOCALEDIR@ ++LRDF_CFLAGS = @LRDF_CFLAGS@ ++LRDF_LIBS = @LRDF_LIBS@ ++LTLIBICONV = @LTLIBICONV@ ++LTLIBINTL = @LTLIBINTL@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAINT = @MAINT@ ++MAKEFLAGS = @MAKEFLAGS@ ++MAKEINFO = @MAKEINFO@ ++METADATA_CFLAGS = @METADATA_CFLAGS@ ++METADATA_LIBS = @METADATA_LIBS@ ++MIMIC_CFLAGS = @MIMIC_CFLAGS@ ++MIMIC_LIBS = @MIMIC_LIBS@ ++MJPEG_CFLAGS = @MJPEG_CFLAGS@ ++MJPEG_LIBS = @MJPEG_LIBS@ ++MKDIR_P = @MKDIR_P@ ++MODPLUG_CFLAGS = @MODPLUG_CFLAGS@ ++MODPLUG_LIBS = @MODPLUG_LIBS@ ++MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@ ++MPEG2ENC_LIBS = @MPEG2ENC_LIBS@ ++MPLEX_CFLAGS = @MPLEX_CFLAGS@ ++MPLEX_LIBS = @MPLEX_LIBS@ ++MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ ++MSGMERGE = @MSGMERGE@ ++MUSEPACK_LIBS = @MUSEPACK_LIBS@ ++MUSICBRAINZ_CFLAGS = @MUSICBRAINZ_CFLAGS@ ++MUSICBRAINZ_LIBS = @MUSICBRAINZ_LIBS@ ++NAS_CFLAGS = @NAS_CFLAGS@ ++NAS_LIBS = @NAS_LIBS@ ++NEON_CFLAGS = @NEON_CFLAGS@ ++NEON_LIBS = @NEON_LIBS@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ ++OBJC = @OBJC@ ++OBJCDEPMODE = @OBJCDEPMODE@ ++OBJC_LDFLAGS = @OBJC_LDFLAGS@ ++OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ ++OFA_CFLAGS = @OFA_CFLAGS@ ++OFA_LIBS = @OFA_LIBS@ ++ORCC = @ORCC@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ ++PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ ++PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ ++PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ ++PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@ ++PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ ++PKG_CONFIG = @PKG_CONFIG@ ++PLUGINDIR = @PLUGINDIR@ ++POSUB = @POSUB@ ++PROFILE_CFLAGS = @PROFILE_CFLAGS@ ++PYTHON = @PYTHON@ ++PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ ++PYTHON_PLATFORM = @PYTHON_PLATFORM@ ++PYTHON_PREFIX = @PYTHON_PREFIX@ ++PYTHON_VERSION = @PYTHON_VERSION@ ++Q = @Q@ ++RANLIB = @RANLIB@ ++RSVG_CFLAGS = @RSVG_CFLAGS@ ++RSVG_LIBS = @RSVG_LIBS@ ++SCHRO_CFLAGS = @SCHRO_CFLAGS@ ++SCHRO_LIBS = @SCHRO_LIBS@ ++SDL_CFLAGS = @SDL_CFLAGS@ ++SDL_CONFIG = @SDL_CONFIG@ ++SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ ++SLV2_CFLAGS = @SLV2_CFLAGS@ ++SLV2_LIBS = @SLV2_LIBS@ ++SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ ++SNDFILE_LIBS = @SNDFILE_LIBS@ ++SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@ ++SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@ ++SPC_LIBS = @SPC_LIBS@ ++STRIP = @STRIP@ ++SWFDEC_CFLAGS = @SWFDEC_CFLAGS@ ++SWFDEC_LIBS = @SWFDEC_LIBS@ ++THEORADEC_CFLAGS = @THEORADEC_CFLAGS@ ++THEORADEC_LIBS = @THEORADEC_LIBS@ ++TIGER_CFLAGS = @TIGER_CFLAGS@ ++TIGER_LIBS = @TIGER_LIBS@ ++TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@ ++TIMIDITY_LIBS = @TIMIDITY_LIBS@ ++USE_NLS = @USE_NLS@ ++V = @V@ ++VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ ++VALGRIND_LIBS = @VALGRIND_LIBS@ ++VALGRIND_PATH = @VALGRIND_PATH@ ++VDPAU_CFLAGS = @VDPAU_CFLAGS@ ++VDPAU_LIBS = @VDPAU_LIBS@ ++VERSION = @VERSION@ ++WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@ ++WILDMIDI_LIBS = @WILDMIDI_LIBS@ ++WIN32_LIBS = @WIN32_LIBS@ ++X11_CFLAGS = @X11_CFLAGS@ ++X11_LIBS = @X11_LIBS@ ++XDG_LIBS = @XDG_LIBS@ ++XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ++XMKMF = @XMKMF@ ++XMP_1_99_5_CFLAGS = @XMP_1_99_5_CFLAGS@ ++XMP_1_99_5_LIBS = @XMP_1_99_5_LIBS@ ++XMP_CFLAGS = @XMP_CFLAGS@ ++XMP_LIBS = @XMP_LIBS@ ++XVID_LIBS = @XVID_LIBS@ ++X_CFLAGS = @X_CFLAGS@ ++X_EXTRA_LIBS = @X_EXTRA_LIBS@ ++X_LIBS = @X_LIBS@ ++X_PRE_LIBS = @X_PRE_LIBS@ ++ZBAR_CFLAGS = @ZBAR_CFLAGS@ ++ZBAR_LIBS = @ZBAR_LIBS@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ++ac_ct_OBJC = @ac_ct_OBJC@ ++am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ ++am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ ++install_sh = @install_sh@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++pkgpyexecdir = @pkgpyexecdir@ ++pkgpythondir = @pkgpythondir@ ++plugindir = @plugindir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++pyexecdir = @pyexecdir@ ++pythondir = @pythondir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++shavedir = @shavedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_build_prefix = @top_build_prefix@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ ++plugin_LTLIBRARIES = libgstliveadder.la ++libgstliveadder_la_SOURCES = liveadder.c ++libgstliveadder_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) ++libgstliveadder_la_LIBADD = \ ++ $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_MAJORMINOR@ \ ++ $(GST_BASE_LIBS) $(GST_LIBS) ++ ++libgstliveadder_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) ++libgstliveadder_la_LIBTOOLFLAGS = --tag=disable-static ++noinst_HEADERS = liveadder.h ++all: all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/liveadder/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnu gst/liveadder/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) ++ @$(NORMAL_INSTALL) ++ test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)" ++ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ ++ list2=; for p in $$list; do \ ++ if test -f $$p; then \ ++ list2="$$list2 $$p"; \ ++ else :; fi; \ ++ done; \ ++ test -z "$$list2" || { \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \ ++ } ++ ++uninstall-pluginLTLIBRARIES: ++ @$(NORMAL_UNINSTALL) ++ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ ++ for p in $$list; do \ ++ $(am__strip_dir) \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \ ++ done ++ ++clean-pluginLTLIBRARIES: ++ -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) ++ @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ ++ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ++ test "$$dir" != "$$p" || dir=.; \ ++ echo "rm -f \"$${dir}/so_locations\""; \ ++ rm -f "$${dir}/so_locations"; \ ++ done ++libgstliveadder.la: $(libgstliveadder_la_OBJECTS) $(libgstliveadder_la_DEPENDENCIES) ++ $(libgstliveadder_la_LINK) -rpath $(plugindir) $(libgstliveadder_la_OBJECTS) $(libgstliveadder_la_LIBADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstliveadder_la-liveadder.Plo@am__quote@ ++ ++.c.o: ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< ++ ++.c.obj: ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< ++ ++libgstliveadder_la-liveadder.lo: liveadder.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstliveadder_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstliveadder_la_CFLAGS) $(CFLAGS) -MT libgstliveadder_la-liveadder.lo -MD -MP -MF $(DEPDIR)/libgstliveadder_la-liveadder.Tpo -c -o libgstliveadder_la-liveadder.lo `test -f 'liveadder.c' || echo '$(srcdir)/'`liveadder.c ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstliveadder_la-liveadder.Tpo $(DEPDIR)/libgstliveadder_la-liveadder.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='liveadder.c' object='libgstliveadder_la-liveadder.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstliveadder_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstliveadder_la_CFLAGS) $(CFLAGS) -c -o libgstliveadder_la-liveadder.lo `test -f 'liveadder.c' || echo '$(srcdir)/'`liveadder.c ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ mkid -fID $$unique ++tags: TAGS ++ ++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ set x; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++check-am: all-am ++check: check-am ++all-am: Makefile $(LTLIBRARIES) $(HEADERS) ++installdirs: ++ for dir in "$(DESTDIR)$(plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \ ++ mostlyclean-am ++ ++distclean: distclean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: install-pluginLTLIBRARIES ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libtool clean-pluginLTLIBRARIES ctags distclean \ ++ distclean-compile distclean-generic distclean-libtool \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-pluginLTLIBRARIES \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-compile \ ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags uninstall uninstall-am uninstall-pluginLTLIBRARIES ++ ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/Makefile.am gst-plugins-good0.10-0.10.23/farsight/Makefile.am +--- gst-plugins-good0.10-0.10.23.ori/farsight/Makefile.am 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/Makefile.am 2010-03-29 19:40:00.000000000 -0400 +@@ -0,0 +1,2 @@ ++SUBDIRS = autoconvert dtmf liveadder rtpmux valve ++ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/gstrtpdtmfmux.c gst-plugins-good0.10-0.10.23/farsight/rtpmux/gstrtpdtmfmux.c +--- gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/gstrtpdtmfmux.c 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/rtpmux/gstrtpdtmfmux.c 2010-01-05 20:53:19.000000000 -0500 +@@ -0,0 +1,327 @@ ++/* RTP DTMF muxer element for GStreamer ++ * ++ * gstrtpdtmfmux.c: ++ * ++ * Copyright (C) <2007> Nokia Corporation. ++ * Contact: Zeeshan Ali ++ * Copyright (C) 1999,2000 Erik Walthinsen ++ * 2000,2005 Wim Taymans ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++/** ++ * SECTION:element-rtpdtmfmux ++ * @see_also: rtpdtmfsrc, dtmfsrc ++ * ++ * The RTPDTMFMuxer mixes/muxes RTP DTMF stream(s) into other RTP ++ * streams. It does exactly what it's parent (RTPMuxer) does, except ++ * that it allows upstream peer elements to request exclusive access ++ * to the stream, which is required by the RTP DTMF standards (see RFC ++ * 2833, section 3.2, para 1 for details). The peer upstream element ++ * requests the acquisition and release of a stream lock beginning ++ * using custom downstream gstreamer events. To request the acquisition ++ * of the lock, the peer element must send an event of type ++ * GST_EVENT_CUSTOM_DOWNSTREAM_OOB, having a ++ * structure of name "stream-lock" with only one boolean field: ++ * "lock". If this field is set to TRUE, the request is for the ++ * acquisition of the lock, otherwise it is for release of the lock. ++ * ++ * For example, the following code in an upstream peer element ++ * requests the acquisition of the stream lock: ++ * ++ * ++ * GstEvent *event; ++ * GstStructure *structure; ++ * GstPad *srcpad; ++ * ++ * ... /\* srcpad initialization goes here \*\/ ++ * ++ * structure = gst_structure_new ("stream-lock", ++ * "lock", G_TYPE_BOOLEAN, TRUE, NULL); ++ * ++ * event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM_OOB, structure); ++ * gst_pad_push_event (dtmfsrc->srcpad, event); ++ * ++ * ++ */ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include ++#include ++ ++#include "gstrtpdtmfmux.h" ++ ++GST_DEBUG_CATEGORY_STATIC (gst_rtp_dtmf_mux_debug); ++#define GST_CAT_DEFAULT gst_rtp_dtmf_mux_debug ++ ++/* elementfactory information */ ++static const GstElementDetails gst_rtp_dtmf_mux_details = ++GST_ELEMENT_DETAILS ("RTP muxer", ++ "Codec/Muxer", ++ "mixes RTP DTMF streams into other RTP streams", ++ "Zeeshan Ali "); ++ ++enum ++{ ++ SIGNAL_LOCKING_STREAM, ++ SIGNAL_UNLOCKED_STREAM, ++ LAST_SIGNAL ++}; ++ ++static guint gst_rtpdtmfmux_signals[LAST_SIGNAL] = { 0 }; ++ ++static void gst_rtp_dtmf_mux_dispose (GObject * object); ++ ++static void gst_rtp_dtmf_mux_release_pad (GstElement * element, GstPad * pad); ++ ++static gboolean gst_rtp_dtmf_mux_sink_event (GstPad * pad, GstEvent * event); ++static GstFlowReturn gst_rtp_dtmf_mux_chain (GstPad * pad, GstBuffer * buffer); ++ ++GST_BOILERPLATE (GstRTPDTMFMux, gst_rtp_dtmf_mux, GstRTPMux, GST_TYPE_RTP_MUX); ++ ++static void ++gst_rtp_dtmf_mux_init (GstRTPDTMFMux * object, GstRTPDTMFMuxClass * g_class) ++{ ++} ++ ++static void ++gst_rtp_dtmf_mux_base_init (gpointer g_class) ++{ ++ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); ++ ++ gst_element_class_set_details (element_class, &gst_rtp_dtmf_mux_details); ++} ++ ++static void ++gst_rtp_dtmf_mux_class_init (GstRTPDTMFMuxClass * klass) ++{ ++ GObjectClass *gobject_class; ++ GstElementClass *gstelement_class; ++ GstRTPMuxClass *gstrtpmux_class; ++ ++ gobject_class = (GObjectClass *) klass; ++ gstelement_class = (GstElementClass *) klass; ++ gstrtpmux_class = (GstRTPMuxClass *) klass; ++ ++ gst_rtpdtmfmux_signals[SIGNAL_LOCKING_STREAM] = ++ g_signal_new ("locking", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (GstRTPDTMFMuxClass, locking), NULL, NULL, ++ gst_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GST_TYPE_PAD); ++ ++ gst_rtpdtmfmux_signals[SIGNAL_UNLOCKED_STREAM] = ++ g_signal_new ("unlocked", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (GstRTPDTMFMuxClass, unlocked), NULL, NULL, ++ gst_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GST_TYPE_PAD); ++ ++ gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_rtp_dtmf_mux_dispose); ++ gstelement_class->release_pad = ++ GST_DEBUG_FUNCPTR (gst_rtp_dtmf_mux_release_pad); ++ gstrtpmux_class->chain_func = GST_DEBUG_FUNCPTR (gst_rtp_dtmf_mux_chain); ++ gstrtpmux_class->sink_event_func = ++ GST_DEBUG_FUNCPTR (gst_rtp_dtmf_mux_sink_event); ++} ++ ++static void ++gst_rtp_dtmf_mux_dispose (GObject * object) ++{ ++ GstRTPDTMFMux *mux; ++ ++ mux = GST_RTP_DTMF_MUX (object); ++ ++ GST_OBJECT_LOCK (mux); ++ if (mux->special_pad != NULL) { ++ gst_object_unref (mux->special_pad); ++ mux->special_pad = NULL; ++ } ++ GST_OBJECT_UNLOCK (mux); ++ ++ G_OBJECT_CLASS (parent_class)->dispose (object); ++} ++ ++static GstFlowReturn ++gst_rtp_dtmf_mux_chain (GstPad * pad, GstBuffer * buffer) ++{ ++ GstRTPDTMFMux *mux; ++ GstFlowReturn ret; ++ ++ mux = GST_RTP_DTMF_MUX (gst_pad_get_parent (pad)); ++ ++ GST_OBJECT_LOCK (mux); ++ if (mux->special_pad != NULL && mux->special_pad != pad) { ++ /* Drop the buffer */ ++ gst_buffer_unref (buffer); ++ ret = GST_FLOW_OK; ++ GST_OBJECT_UNLOCK (mux); ++ } ++ ++ else { ++ GST_OBJECT_UNLOCK (mux); ++ if (parent_class->chain_func) ++ ret = parent_class->chain_func (pad, buffer); ++ else { ++ gst_buffer_unref (buffer); ++ ret = GST_FLOW_ERROR; ++ } ++ } ++ ++ gst_object_unref (mux); ++ return ret; ++} ++ ++static void ++gst_rtp_dtmf_mux_lock_stream (GstRTPDTMFMux * mux, GstPad * pad) ++{ ++ if (mux->special_pad != NULL) ++ GST_WARNING_OBJECT (mux, ++ "Stream lock already acquired by pad %s", ++ GST_ELEMENT_NAME (mux->special_pad)); ++ ++ else { ++ GST_DEBUG_OBJECT (mux, ++ "Stream lock acquired by pad %s", GST_ELEMENT_NAME (pad)); ++ mux->special_pad = gst_object_ref (pad); ++ } ++} ++ ++static void ++gst_rtp_dtmf_mux_unlock_stream (GstRTPDTMFMux * mux, GstPad * pad) ++{ ++ if (mux->special_pad == NULL) ++ GST_WARNING_OBJECT (mux, "Stream lock not acquired, can't release it"); ++ ++ else if (pad != mux->special_pad) ++ GST_WARNING_OBJECT (mux, ++ "pad %s attempted to release Stream lock" ++ " which was acquired by pad %s", GST_ELEMENT_NAME (pad), ++ GST_ELEMENT_NAME (mux->special_pad)); ++ else { ++ GST_DEBUG_OBJECT (mux, ++ "Stream lock released by pad %s", GST_ELEMENT_NAME (mux->special_pad)); ++ gst_object_unref (mux->special_pad); ++ mux->special_pad = NULL; ++ } ++} ++ ++static gboolean ++gst_rtp_dtmf_mux_handle_stream_lock_event (GstRTPDTMFMux * mux, GstPad * pad, ++ const GstStructure * event_structure) ++{ ++ gboolean lock; ++ ++ if (!gst_structure_get_boolean (event_structure, "lock", &lock)) ++ return FALSE; ++ ++ if (lock) ++ g_signal_emit (G_OBJECT (mux), ++ gst_rtpdtmfmux_signals[SIGNAL_LOCKING_STREAM], 0, pad); ++ ++ GST_OBJECT_LOCK (mux); ++ if (lock) ++ gst_rtp_dtmf_mux_lock_stream (mux, pad); ++ else ++ gst_rtp_dtmf_mux_unlock_stream (mux, pad); ++ GST_OBJECT_UNLOCK (mux); ++ ++ if (!lock) ++ g_signal_emit (G_OBJECT (mux), ++ gst_rtpdtmfmux_signals[SIGNAL_UNLOCKED_STREAM], 0, pad); ++ ++ return TRUE; ++} ++ ++static gboolean ++gst_rtp_dtmf_mux_handle_downstream_event (GstRTPDTMFMux * mux, ++ GstPad * pad, GstEvent * event) ++{ ++ const GstStructure *structure; ++ gboolean ret = FALSE; ++ ++ structure = gst_event_get_structure (event); ++ /* FIXME: is this event generic enough to be given a generic name? */ ++ if (structure && gst_structure_has_name (structure, "stream-lock")) ++ ret = gst_rtp_dtmf_mux_handle_stream_lock_event (mux, pad, structure); ++ ++ return ret; ++} ++ ++static gboolean ++gst_rtp_dtmf_mux_ignore_event (GstPad * pad, GstEvent * event) ++{ ++ gboolean ret; ++ ++ if (parent_class->sink_event_func) ++ /* Give the parent a chance to handle the event first */ ++ ret = parent_class->sink_event_func (pad, event); ++ ++ else ++ ret = gst_pad_event_default (pad, event); ++ ++ return ret; ++} ++ ++static gboolean ++gst_rtp_dtmf_mux_sink_event (GstPad * pad, GstEvent * event) ++{ ++ GstRTPDTMFMux *mux; ++ GstEventType type; ++ gboolean ret = FALSE; ++ ++ type = event ? GST_EVENT_TYPE (event) : GST_EVENT_UNKNOWN; ++ ++ mux = (GstRTPDTMFMux *) gst_pad_get_parent (pad); ++ ++ switch (type) { ++ case GST_EVENT_CUSTOM_DOWNSTREAM_OOB: ++ ret = gst_rtp_dtmf_mux_handle_downstream_event (mux, pad, event); ++ gst_event_unref (event); ++ break; ++ default: ++ ret = gst_rtp_dtmf_mux_ignore_event (pad, event); ++ break; ++ } ++ ++ gst_object_unref (mux); ++ return ret; ++} ++ ++static void ++gst_rtp_dtmf_mux_release_pad (GstElement * element, GstPad * pad) ++{ ++ GstRTPDTMFMux *mux = GST_RTP_DTMF_MUX (element); ++ ++ GST_OBJECT_LOCK (mux); ++ if (mux->special_pad == pad) { ++ gst_object_unref (mux->special_pad); ++ mux->special_pad = NULL; ++ } ++ GST_OBJECT_UNLOCK (mux); ++ ++ GST_CALL_PARENT (GST_ELEMENT_CLASS, release_pad, (element, pad)); ++} ++ ++gboolean ++gst_rtp_dtmf_mux_plugin_init (GstPlugin * plugin) ++{ ++ GST_DEBUG_CATEGORY_INIT (gst_rtp_dtmf_mux_debug, "rtpdtmfmux", 0, ++ "rtp dtmf muxer"); ++ ++ return gst_element_register (plugin, "rtpdtmfmux", GST_RANK_NONE, ++ GST_TYPE_RTP_DTMF_MUX); ++} +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/gstrtpdtmfmux.h gst-plugins-good0.10-0.10.23/farsight/rtpmux/gstrtpdtmfmux.h +--- gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/gstrtpdtmfmux.h 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/rtpmux/gstrtpdtmfmux.h 2009-05-21 14:46:27.000000000 -0400 +@@ -0,0 +1,68 @@ ++/* RTP muxer element for GStreamer ++ * ++ * gstrtpdtmfmux.h: ++ * ++ * Copyright (C) <2007> Nokia Corporation. ++ * Contact: Zeeshan Ali ++ * Copyright (C) 1999,2000 Erik Walthinsen ++ * 2000,2005 Wim Taymans ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++#ifndef __GST_RTP_DTMF_MUX_H__ ++#define __GST_RTP_DTMF_MUX_H__ ++ ++#include ++#include "gstrtpmux.h" ++ ++G_BEGIN_DECLS ++#define GST_TYPE_RTP_DTMF_MUX (gst_rtp_dtmf_mux_get_type()) ++#define GST_RTP_DTMF_MUX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_DTMF_MUX, GstRTPDTMFMux)) ++#define GST_RTP_DTMF_MUX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_DTMF_MUX, GstRTPDTMFMux)) ++#define GST_IS_RTP_DTMF_MUX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_DTMF_MUX)) ++#define GST_IS_RTP_DTMF_MUX_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_DTMF_MUX)) ++typedef struct _GstRTPDTMFMux GstRTPDTMFMux; ++typedef struct _GstRTPDTMFMuxClass GstRTPDTMFMuxClass; ++ ++/** ++ * GstRTPDTMFMux: ++ * ++ * The opaque #GstRTPDTMFMux structure. ++ */ ++struct _GstRTPDTMFMux ++{ ++ GstRTPMux mux; ++ ++ /* Protected by object lock */ ++ /* our special pad */ ++ GstPad *special_pad; ++}; ++ ++struct _GstRTPDTMFMuxClass ++{ ++ GstRTPMuxClass parent_class; ++ ++ /* signals */ ++ void (*locking) (GstElement * element, GstPad * pad); ++ void (*unlocked) (GstElement * element, GstPad * pad); ++}; ++ ++GType gst_rtp_dtmf_mux_get_type (void); ++gboolean gst_rtp_dtmf_mux_plugin_init (GstPlugin * plugin); ++ ++G_END_DECLS ++#endif /* __GST_RTP_DTMF_MUX_H__ */ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/gstrtpmux.c gst-plugins-good0.10-0.10.23/farsight/rtpmux/gstrtpmux.c +--- gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/gstrtpmux.c 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/rtpmux/gstrtpmux.c 2010-01-05 20:53:19.000000000 -0500 +@@ -0,0 +1,662 @@ ++/* RTP muxer element for GStreamer ++ * ++ * gstrtpmux.c: ++ * ++ * Copyright (C) <2007> Nokia Corporation. ++ * Contact: Zeeshan Ali ++ * Copyright (C) 1999,2000 Erik Walthinsen ++ * 2000,2005 Wim Taymans ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++/** ++ * SECTION:element-rtpmux ++ * ++ * The rtp muxer takes multiple RTP streams having the same clock-rate and ++ * muxes into a single stream with a single SSRC. ++ */ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include ++#include ++#include ++ ++#include "gstrtpmux.h" ++ ++GST_DEBUG_CATEGORY_STATIC (gst_rtp_mux_debug); ++#define GST_CAT_DEFAULT gst_rtp_mux_debug ++ ++/* elementfactory information */ ++static const GstElementDetails gst_rtp_mux_details = ++GST_ELEMENT_DETAILS ("RTP muxer", ++ "Codec/Muxer", ++ "multiplex N rtp streams into one", ++ "Zeeshan Ali "); ++ ++enum ++{ ++ ARG_0, ++ PROP_TIMESTAMP_OFFSET, ++ PROP_SEQNUM_OFFSET, ++ PROP_SEQNUM, ++ PROP_SSRC ++}; ++ ++#define DEFAULT_TIMESTAMP_OFFSET -1 ++#define DEFAULT_SEQNUM_OFFSET -1 ++#define DEFAULT_SSRC -1 ++ ++typedef struct ++{ ++ gboolean have_clock_base; ++ guint clock_base; ++ ++ GstCaps *out_caps; ++} GstRTPMuxPadPrivate; ++ ++static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", ++ GST_PAD_SRC, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS ("application/x-rtp") ++ ); ++ ++static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink_%d", ++ GST_PAD_SINK, ++ GST_PAD_REQUEST, ++ GST_STATIC_CAPS ("application/x-rtp") ++ ); ++ ++static GstPad *gst_rtp_mux_request_new_pad (GstElement * element, ++ GstPadTemplate * templ, const gchar * name); ++static void gst_rtp_mux_release_pad (GstElement * element, GstPad * pad); ++static GstFlowReturn gst_rtp_mux_chain (GstPad * pad, GstBuffer * buffer); ++static gboolean gst_rtp_mux_setcaps (GstPad * pad, GstCaps * caps); ++static GstCaps *gst_rtp_mux_getcaps (GstPad * pad); ++ ++static GstStateChangeReturn gst_rtp_mux_change_state (GstElement * ++ element, GstStateChange transition); ++ ++static void gst_rtp_mux_set_property (GObject * object, guint prop_id, ++ const GValue * value, GParamSpec * pspec); ++static void gst_rtp_mux_get_property (GObject * object, guint prop_id, ++ GValue * value, GParamSpec * pspec); ++static void gst_rtp_mux_dispose (GObject * object); ++ ++GST_BOILERPLATE (GstRTPMux, gst_rtp_mux, GstElement, GST_TYPE_ELEMENT); ++ ++static void ++gst_rtp_mux_base_init (gpointer g_class) ++{ ++ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); ++ ++ gst_element_class_add_pad_template (element_class, ++ gst_static_pad_template_get (&src_factory)); ++ gst_element_class_add_pad_template (element_class, ++ gst_static_pad_template_get (&sink_factory)); ++ ++ gst_element_class_set_details (element_class, &gst_rtp_mux_details); ++} ++ ++static void ++gst_rtp_mux_class_init (GstRTPMuxClass * klass) ++{ ++ GObjectClass *gobject_class; ++ GstElementClass *gstelement_class; ++ ++ gobject_class = (GObjectClass *) klass; ++ gstelement_class = (GstElementClass *) klass; ++ ++ gobject_class->get_property = gst_rtp_mux_get_property; ++ gobject_class->set_property = gst_rtp_mux_set_property; ++ gobject_class->dispose = gst_rtp_mux_dispose; ++ ++ g_object_class_install_property (G_OBJECT_CLASS (klass), ++ PROP_TIMESTAMP_OFFSET, g_param_spec_int ("timestamp-offset", ++ "Timestamp Offset", ++ "Offset to add to all outgoing timestamps (-1 = random)", -1, ++ G_MAXINT, DEFAULT_TIMESTAMP_OFFSET, G_PARAM_READWRITE)); ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SEQNUM_OFFSET, ++ g_param_spec_int ("seqnum-offset", "Sequence number Offset", ++ "Offset to add to all outgoing seqnum (-1 = random)", -1, G_MAXINT, ++ DEFAULT_SEQNUM_OFFSET, G_PARAM_READWRITE)); ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SEQNUM, ++ g_param_spec_uint ("seqnum", "Sequence number", ++ "The RTP sequence number of the last processed packet", ++ 0, G_MAXUINT, 0, G_PARAM_READABLE)); ++ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SSRC, ++ g_param_spec_uint ("ssrc", "SSRC", ++ "The SSRC of the packets (-1 == random)", ++ 0, G_MAXUINT, DEFAULT_SSRC, G_PARAM_READWRITE)); ++ ++ gstelement_class->request_new_pad = ++ GST_DEBUG_FUNCPTR (gst_rtp_mux_request_new_pad); ++ gstelement_class->release_pad = GST_DEBUG_FUNCPTR (gst_rtp_mux_release_pad); ++ gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_rtp_mux_change_state); ++ ++ klass->chain_func = gst_rtp_mux_chain; ++} ++ ++static void ++gst_rtp_mux_dispose (GObject * object) ++{ ++ GList *item; ++ ++restart: ++ for (item = GST_ELEMENT_PADS (object); item; item = g_list_next (item)) { ++ GstPad *pad = GST_PAD (item->data); ++ if (GST_PAD_IS_SINK (pad)) { ++ gst_element_release_request_pad (GST_ELEMENT (object), pad); ++ goto restart; ++ } ++ } ++ ++ G_OBJECT_CLASS (parent_class)->dispose (object); ++} ++ ++static gboolean ++gst_rtp_mux_src_event (GstPad * pad, GstEvent * event) ++{ ++ GstElement *rtp_mux; ++ GstIterator *iter; ++ GstPad *sinkpad; ++ gboolean result = FALSE; ++ gboolean done = FALSE; ++ ++ rtp_mux = gst_pad_get_parent_element (pad); ++ g_return_val_if_fail (rtp_mux != NULL, FALSE); ++ ++ iter = gst_element_iterate_sink_pads (rtp_mux); ++ ++ while (!done) { ++ switch (gst_iterator_next (iter, (gpointer) & sinkpad)) { ++ case GST_ITERATOR_OK: ++ gst_event_ref (event); ++ result |= gst_pad_push_event (sinkpad, event); ++ gst_object_unref (sinkpad); ++ break; ++ case GST_ITERATOR_RESYNC: ++ gst_iterator_resync (iter); ++ result = FALSE; ++ break; ++ case GST_ITERATOR_ERROR: ++ GST_WARNING_OBJECT (rtp_mux, "Error iterating sinkpads"); ++ case GST_ITERATOR_DONE: ++ done = TRUE; ++ break; ++ } ++ } ++ gst_iterator_free (iter); ++ gst_object_unref (rtp_mux); ++ gst_event_unref (event); ++ ++ return result; ++} ++ ++static void ++gst_rtp_mux_init (GstRTPMux * object, GstRTPMuxClass * g_class) ++{ ++ GstElementClass *klass = GST_ELEMENT_GET_CLASS (object); ++ ++ object->srcpad = ++ gst_pad_new_from_template (gst_element_class_get_pad_template (klass, ++ "src"), "src"); ++ gst_pad_set_event_function (object->srcpad, ++ GST_DEBUG_FUNCPTR (gst_rtp_mux_src_event)); ++ gst_element_add_pad (GST_ELEMENT (object), object->srcpad); ++ ++ object->ssrc = DEFAULT_SSRC; ++ object->ts_offset = DEFAULT_TIMESTAMP_OFFSET; ++ object->seqnum_offset = DEFAULT_SEQNUM_OFFSET; ++} ++ ++static GstPad * ++gst_rtp_mux_create_sinkpad (GstRTPMux * rtp_mux, GstPadTemplate * templ, ++ const gchar * req_name) ++{ ++ GstPad *newpad = NULL; ++ GstPadTemplate *class_templ; ++ ++ class_templ = ++ gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (rtp_mux), ++ "sink_%d"); ++ ++ if (templ == class_templ) { ++ gchar *tmpname = NULL; ++ const gchar *name = NULL; ++ ++ /* create new pad with the name */ ++ if (req_name) ++ name = req_name; ++ else ++ name = tmpname = g_strdup_printf ("sink_%02d", rtp_mux->numpads); ++ newpad = gst_pad_new_from_template (templ, name); ++ g_free (tmpname); ++ ++ rtp_mux->numpads++; ++ } else { ++ GST_WARNING_OBJECT (rtp_mux, "this is not our template!\n"); ++ } ++ ++ return newpad; ++} ++ ++static void ++gst_rtp_mux_setup_sinkpad (GstRTPMux * rtp_mux, GstPad * sinkpad) ++{ ++ GstRTPMuxClass *klass; ++ GstRTPMuxPadPrivate *padpriv = g_slice_new0 (GstRTPMuxPadPrivate); ++ ++ klass = GST_RTP_MUX_GET_CLASS (rtp_mux); ++ ++ /* setup some pad functions */ ++ gst_pad_set_setcaps_function (sinkpad, gst_rtp_mux_setcaps); ++ gst_pad_set_getcaps_function (sinkpad, gst_rtp_mux_getcaps); ++ if (klass->chain_func) ++ gst_pad_set_chain_function (sinkpad, klass->chain_func); ++ if (klass->sink_event_func) ++ gst_pad_set_event_function (sinkpad, klass->sink_event_func); ++ ++ /* This could break with gstreamer 0.10.9 */ ++ gst_pad_set_active (sinkpad, TRUE); ++ ++ gst_pad_set_element_private (sinkpad, padpriv); ++ ++ /* dd the pad to the element */ ++ gst_element_add_pad (GST_ELEMENT (rtp_mux), sinkpad); ++} ++ ++static GstPad * ++gst_rtp_mux_request_new_pad (GstElement * element, ++ GstPadTemplate * templ, const gchar * req_name) ++{ ++ GstRTPMux *rtp_mux; ++ GstPad *newpad; ++ ++ g_return_val_if_fail (templ != NULL, NULL); ++ g_return_val_if_fail (GST_IS_RTP_MUX (element), NULL); ++ ++ rtp_mux = GST_RTP_MUX (element); ++ ++ if (templ->direction != GST_PAD_SINK) { ++ GST_WARNING_OBJECT (rtp_mux, "request pad that is not a SINK pad"); ++ return NULL; ++ } ++ ++ newpad = gst_rtp_mux_create_sinkpad (rtp_mux, templ, req_name); ++ if (newpad) ++ gst_rtp_mux_setup_sinkpad (rtp_mux, newpad); ++ else ++ GST_WARNING_OBJECT (rtp_mux, "failed to create request pad"); ++ ++ return newpad; ++} ++ ++static void ++gst_rtp_mux_release_pad (GstElement * element, GstPad * pad) ++{ ++ GstRTPMuxPadPrivate *padpriv; ++ ++ GST_OBJECT_LOCK (element); ++ padpriv = gst_pad_get_element_private (pad); ++ gst_pad_set_element_private (pad, NULL); ++ GST_OBJECT_UNLOCK (element); ++ ++ gst_element_remove_pad (element, pad); ++ ++ if (padpriv) { ++ gst_caps_replace (&padpriv->out_caps, NULL); ++ g_slice_free (GstRTPMuxPadPrivate, padpriv); ++ } ++} ++ ++/* Put our own clock-base on the buffer */ ++static void ++gst_rtp_mux_readjust_rtp_timestamp (GstRTPMux * rtp_mux, GstPad * pad, ++ GstBuffer * buffer) ++{ ++ guint32 ts; ++ guint32 sink_ts_base = 0; ++ GstRTPMuxPadPrivate *padpriv; ++ ++ ++ GST_OBJECT_LOCK (rtp_mux); ++ padpriv = gst_pad_get_element_private (pad); ++ if (padpriv && padpriv->have_clock_base) ++ sink_ts_base = padpriv->clock_base; ++ GST_OBJECT_UNLOCK (rtp_mux); ++ ++ ts = gst_rtp_buffer_get_timestamp (buffer) - sink_ts_base + rtp_mux->ts_base; ++ GST_LOG_OBJECT (rtp_mux, "Re-adjusting RTP ts %u to %u", ++ gst_rtp_buffer_get_timestamp (buffer), ts); ++ gst_rtp_buffer_set_timestamp (buffer, ts); ++} ++ ++static GstFlowReturn ++gst_rtp_mux_chain (GstPad * pad, GstBuffer * buffer) ++{ ++ GstRTPMux *rtp_mux; ++ GstFlowReturn ret; ++ GstRTPMuxPadPrivate *padpriv; ++ ++ rtp_mux = GST_RTP_MUX (gst_pad_get_parent (pad)); ++ ++ if (!gst_rtp_buffer_validate (buffer)) { ++ GST_ERROR_OBJECT (rtp_mux, "Invalid RTP buffer"); ++ gst_object_unref (rtp_mux); ++ return GST_FLOW_ERROR; ++ } ++ ++ buffer = gst_buffer_make_writable (buffer); ++ ++ GST_OBJECT_LOCK (rtp_mux); ++ rtp_mux->seqnum++; ++ gst_rtp_buffer_set_seq (buffer, rtp_mux->seqnum); ++ padpriv = gst_pad_get_element_private (pad); ++ if (padpriv) ++ gst_buffer_set_caps (buffer, padpriv->out_caps); ++ GST_OBJECT_UNLOCK (rtp_mux); ++ gst_rtp_buffer_set_ssrc (buffer, rtp_mux->current_ssrc); ++ gst_rtp_mux_readjust_rtp_timestamp (rtp_mux, pad, buffer); ++ GST_LOG_OBJECT (rtp_mux, "Pushing packet size %d, seq=%d, ts=%u", ++ GST_BUFFER_SIZE (buffer), rtp_mux->seqnum, ++ gst_rtp_buffer_get_timestamp (buffer)); ++ ++ if (!padpriv) { ++ ret = GST_FLOW_NOT_LINKED; ++ gst_buffer_unref (buffer); ++ goto out; ++ } ++ ++ ret = gst_pad_push (rtp_mux->srcpad, buffer); ++ ++out: ++ ++ gst_object_unref (rtp_mux); ++ return ret; ++} ++ ++static gboolean ++gst_rtp_mux_setcaps (GstPad * pad, GstCaps * caps) ++{ ++ GstRTPMux *rtp_mux; ++ GstStructure *structure; ++ gboolean ret = FALSE; ++ GstRTPMuxPadPrivate *padpriv; ++ ++ rtp_mux = GST_RTP_MUX (gst_pad_get_parent (pad)); ++ ++ structure = gst_caps_get_structure (caps, 0); ++ ++ if (!structure) ++ goto out; ++ ++ GST_OBJECT_LOCK (rtp_mux); ++ padpriv = gst_pad_get_element_private (pad); ++ if (padpriv && ++ gst_structure_get_uint (structure, "clock-base", &padpriv->clock_base)) { ++ padpriv->have_clock_base = TRUE; ++ } ++ GST_OBJECT_UNLOCK (rtp_mux); ++ ++ caps = gst_caps_copy (caps); ++ ++ gst_caps_set_simple (caps, ++ "clock-base", G_TYPE_UINT, rtp_mux->ts_base, ++ "seqnum-base", G_TYPE_UINT, rtp_mux->seqnum_base, NULL); ++ ++ GST_DEBUG_OBJECT (rtp_mux, ++ "setting caps %" GST_PTR_FORMAT " on src pad..", caps); ++ ret = gst_pad_set_caps (rtp_mux->srcpad, caps); ++ ++ if (rtp_mux->ssrc == -1) { ++ if (gst_structure_has_field_typed (structure, "ssrc", G_TYPE_UINT)) { ++ rtp_mux->current_ssrc = g_value_get_uint ++ (gst_structure_get_value (structure, "ssrc")); ++ } ++ } ++ ++ if (ret) { ++ GST_OBJECT_LOCK (rtp_mux); ++ padpriv = gst_pad_get_element_private (pad); ++ if (padpriv) ++ gst_caps_replace (&padpriv->out_caps, caps); ++ GST_OBJECT_UNLOCK (rtp_mux); ++ } ++ gst_caps_unref (caps); ++ ++out: ++ gst_object_unref (rtp_mux); ++ ++ return ret; ++} ++ ++static void ++clear_caps (GstCaps * caps, gboolean only_clock_rate) ++{ ++ gint i, j; ++ ++ /* Lets only match on the clock-rate */ ++ for (i = 0; i < gst_caps_get_size (caps); i++) { ++ GstStructure *s = gst_caps_get_structure (caps, i); ++ ++ for (j = 0; j < gst_structure_n_fields (s); j++) { ++ const gchar *name = gst_structure_nth_field_name (s, j); ++ ++ if (strcmp (name, "clock-rate") && (only_clock_rate || ++ (strcmp (name, "ssrc")))) { ++ gst_structure_remove_field (s, name); ++ j--; ++ } ++ } ++ } ++} ++ ++static gboolean ++same_clock_rate_fold (gpointer item, GValue * ret, gpointer user_data) ++{ ++ GstPad *mypad = user_data; ++ GstPad *pad = item; ++ GstCaps *peercaps; ++ GstCaps *othercaps; ++ const GstCaps *accumcaps; ++ GstCaps *intersect; ++ ++ if (pad == mypad) { ++ gst_object_unref (pad); ++ return TRUE; ++ } ++ ++ peercaps = gst_pad_peer_get_caps (pad); ++ if (!peercaps) { ++ gst_object_unref (pad); ++ return TRUE; ++ } ++ ++ othercaps = gst_caps_intersect (peercaps, ++ gst_pad_get_pad_template_caps (pad)); ++ gst_caps_unref (peercaps); ++ ++ accumcaps = gst_value_get_caps (ret); ++ ++ clear_caps (othercaps, TRUE); ++ ++ intersect = gst_caps_intersect (accumcaps, othercaps); ++ ++ g_value_take_boxed (ret, intersect); ++ ++ gst_caps_unref (othercaps); ++ gst_object_unref (pad); ++ ++ return !gst_caps_is_empty (intersect); ++} ++ ++static GstCaps * ++gst_rtp_mux_getcaps (GstPad * pad) ++{ ++ GstRTPMux *mux = GST_RTP_MUX (gst_pad_get_parent (pad)); ++ GstCaps *caps = NULL; ++ GstIterator *iter = NULL; ++ GValue v = { 0 }; ++ GstIteratorResult res; ++ GstCaps *peercaps = gst_pad_peer_get_caps (mux->srcpad); ++ GstCaps *othercaps = NULL; ++ ++ if (peercaps) { ++ othercaps = gst_caps_intersect (peercaps, ++ gst_pad_get_pad_template_caps (pad)); ++ gst_caps_unref (peercaps); ++ } else { ++ othercaps = gst_caps_copy (gst_pad_get_pad_template_caps (mux->srcpad)); ++ } ++ ++ clear_caps (othercaps, FALSE); ++ ++ g_value_init (&v, GST_TYPE_CAPS); ++ ++ iter = gst_element_iterate_sink_pads (GST_ELEMENT (mux)); ++ do { ++ gst_value_set_caps (&v, othercaps); ++ res = gst_iterator_fold (iter, same_clock_rate_fold, &v, pad); ++ } while (res == GST_ITERATOR_RESYNC); ++ gst_iterator_free (iter); ++ ++ caps = (GstCaps *) gst_value_get_caps (&v); ++ ++ if (res == GST_ITERATOR_ERROR) { ++ gst_caps_unref (caps); ++ caps = gst_caps_new_empty (); ++ } ++ ++ if (othercaps) ++ gst_caps_unref (othercaps); ++ gst_object_unref (mux); ++ ++ return caps; ++} ++ ++ ++static void ++gst_rtp_mux_get_property (GObject * object, ++ guint prop_id, GValue * value, GParamSpec * pspec) ++{ ++ GstRTPMux *rtp_mux; ++ ++ rtp_mux = GST_RTP_MUX (object); ++ ++ switch (prop_id) { ++ case PROP_TIMESTAMP_OFFSET: ++ g_value_set_int (value, rtp_mux->ts_offset); ++ break; ++ case PROP_SEQNUM_OFFSET: ++ g_value_set_int (value, rtp_mux->seqnum_offset); ++ break; ++ case PROP_SEQNUM: ++ GST_OBJECT_LOCK (rtp_mux); ++ g_value_set_uint (value, rtp_mux->seqnum); ++ GST_OBJECT_UNLOCK (rtp_mux); ++ break; ++ case PROP_SSRC: ++ g_value_set_uint (value, rtp_mux->ssrc); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++static void ++gst_rtp_mux_set_property (GObject * object, ++ guint prop_id, const GValue * value, GParamSpec * pspec) ++{ ++ GstRTPMux *rtp_mux; ++ ++ rtp_mux = GST_RTP_MUX (object); ++ ++ switch (prop_id) { ++ case PROP_TIMESTAMP_OFFSET: ++ rtp_mux->ts_offset = g_value_get_int (value); ++ break; ++ case PROP_SEQNUM_OFFSET: ++ rtp_mux->seqnum_offset = g_value_get_int (value); ++ break; ++ case PROP_SSRC: ++ rtp_mux->ssrc = g_value_get_uint (value); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++static void ++gst_rtp_mux_ready_to_paused (GstRTPMux * rtp_mux) ++{ ++ GST_OBJECT_LOCK (rtp_mux); ++ ++ if (rtp_mux->ssrc == -1) ++ rtp_mux->current_ssrc = g_random_int (); ++ else ++ rtp_mux->current_ssrc = rtp_mux->ssrc; ++ ++ if (rtp_mux->seqnum_offset == -1) ++ rtp_mux->seqnum_base = g_random_int_range (0, G_MAXUINT16); ++ else ++ rtp_mux->seqnum_base = rtp_mux->seqnum_offset; ++ rtp_mux->seqnum = rtp_mux->seqnum_base; ++ ++ if (rtp_mux->ts_offset == -1) ++ rtp_mux->ts_base = g_random_int (); ++ else ++ rtp_mux->ts_base = rtp_mux->ts_offset; ++ GST_DEBUG_OBJECT (rtp_mux, "set clock-base to %u", rtp_mux->ts_base); ++ ++ GST_OBJECT_UNLOCK (rtp_mux); ++} ++ ++static GstStateChangeReturn ++gst_rtp_mux_change_state (GstElement * element, GstStateChange transition) ++{ ++ GstRTPMux *rtp_mux; ++ ++ rtp_mux = GST_RTP_MUX (element); ++ ++ switch (transition) { ++ case GST_STATE_CHANGE_NULL_TO_READY: ++ break; ++ case GST_STATE_CHANGE_READY_TO_PAUSED: ++ gst_rtp_mux_ready_to_paused (rtp_mux); ++ break; ++ case GST_STATE_CHANGE_PAUSED_TO_READY: ++ break; ++ default: ++ break; ++ } ++ ++ return GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); ++} ++ ++gboolean ++gst_rtp_mux_plugin_init (GstPlugin * plugin) ++{ ++ GST_DEBUG_CATEGORY_INIT (gst_rtp_mux_debug, "rtpmux", 0, "rtp muxer"); ++ ++ return gst_element_register (plugin, "rtpmux", GST_RANK_NONE, ++ GST_TYPE_RTP_MUX); ++} +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/gstrtpmuxer.c gst-plugins-good0.10-0.10.23/farsight/rtpmux/gstrtpmuxer.c +--- gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/gstrtpmuxer.c 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/rtpmux/gstrtpmuxer.c 2009-05-21 14:46:27.000000000 -0400 +@@ -0,0 +1,48 @@ ++/* GStreamer RTP Muxer Plugins ++ * ++ * gstrtpdtmf.c: ++ * ++ * Copyright (C) <2007> Nokia Corporation. ++ * Contact: Zeeshan Ali ++ * Copyright (C) 1999,2000 Erik Walthinsen ++ * 2000,2005 Wim Taymans ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#include "gstrtpmux.h" ++#include "gstrtpdtmfmux.h" ++ ++static gboolean ++plugin_init (GstPlugin * plugin) ++{ ++ if (!gst_rtp_mux_plugin_init (plugin)) ++ return FALSE; ++ if (!gst_rtp_dtmf_mux_plugin_init (plugin)) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, ++ GST_VERSION_MINOR, ++ "rtpmux", ++ "RTP Muxer plugins", ++ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN) +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/gstrtpmux.h gst-plugins-good0.10-0.10.23/farsight/rtpmux/gstrtpmux.h +--- gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/gstrtpmux.h 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/rtpmux/gstrtpmux.h 2009-05-21 14:46:27.000000000 -0400 +@@ -0,0 +1,78 @@ ++/* RTP muxer element for GStreamer ++ * ++ * gstrtpmux.h: ++ * ++ * Copyright (C) <2007> Nokia Corporation. ++ * Contact: Zeeshan Ali ++ * Copyright (C) 1999,2000 Erik Walthinsen ++ * 2000,2005 Wim Taymans ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++#ifndef __GST_RTP_MUX_H__ ++#define __GST_RTP_MUX_H__ ++ ++#include ++ ++G_BEGIN_DECLS ++#define GST_TYPE_RTP_MUX (gst_rtp_mux_get_type()) ++#define GST_RTP_MUX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_MUX, GstRTPMux)) ++#define GST_RTP_MUX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_MUX, GstRTPMux)) ++#define GST_RTP_MUX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_RTP_MUX, GstRTPMuxClass)) ++#define GST_IS_RTP_MUX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_MUX)) ++#define GST_IS_RTP_MUX_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_MUX)) ++typedef struct _GstRTPMux GstRTPMux; ++typedef struct _GstRTPMuxClass GstRTPMuxClass; ++ ++/** ++ * GstRTPMux: ++ * ++ * The opaque #GstRTPMux structure. ++ */ ++struct _GstRTPMux ++{ ++ GstElement element; ++ ++ /* pad */ ++ GstPad *srcpad; ++ ++ /* sinkpads */ ++ gint numpads; ++ ++ guint32 ts_base; ++ guint16 seqnum_base; ++ ++ gint32 ts_offset; ++ gint16 seqnum_offset; ++ guint16 seqnum; /* protected by object lock */ ++ guint ssrc; ++ guint current_ssrc; ++}; ++ ++struct _GstRTPMuxClass ++{ ++ GstElementClass parent_class; ++ ++ GstFlowReturn (*chain_func) (GstPad * pad, GstBuffer * buffer); ++ gboolean (*sink_event_func) (GstPad * pad, GstEvent * event); ++}; ++ ++GType gst_rtp_mux_get_type (void); ++gboolean gst_rtp_mux_plugin_init (GstPlugin * plugin); ++ ++G_END_DECLS ++#endif /* __GST_RTP_MUX_H__ */ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/Makefile.am gst-plugins-good0.10-0.10.23/farsight/rtpmux/Makefile.am +--- gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/Makefile.am 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/rtpmux/Makefile.am 2009-11-22 14:19:45.000000000 -0500 +@@ -0,0 +1,13 @@ ++plugin_LTLIBRARIES = libgstrtpmux.la ++ ++libgstrtpmux_la_SOURCES = gstrtpmuxer.c gstrtpmux.c gstrtpdtmfmux.c ++ ++libgstrtpmux_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \ ++ -DEXTERN_BUF -DRTP_SUPPORT ++libgstrtpmux_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-@GST_MAJORMINOR@ \ ++ $(GST_BASE_LIBS) $(GST_LIBS) ++libgstrtpmux_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) ++libgstrtpmux_la_LIBTOOLFLAGS = --tag=disable-static ++ ++noinst_HEADERS = gstrtpmux.h gstrtpdtmfmux.h ++ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/Makefile.in gst-plugins-good0.10-0.10.23/farsight/rtpmux/Makefile.in +--- gst-plugins-good0.10-0.10.23.ori/farsight/rtpmux/Makefile.in 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/rtpmux/Makefile.in 2010-03-05 20:28:40.000000000 -0500 +@@ -0,0 +1,842 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# @configure_input@ ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++@SET_MAKE@ ++ ++ ++VPATH = @srcdir@ ++pkgdatadir = $(datadir)/@PACKAGE@ ++pkgincludedir = $(includedir)/@PACKAGE@ ++pkglibdir = $(libdir)/@PACKAGE@ ++pkglibexecdir = $(libexecdir)/@PACKAGE@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = @build@ ++host_triplet = @host@ ++subdir = gst/rtpmux ++DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ ++ $(top_srcdir)/common/m4/as-auto-alt.m4 \ ++ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ ++ $(top_srcdir)/common/m4/as-objc.m4 \ ++ $(top_srcdir)/common/m4/as-python.m4 \ ++ $(top_srcdir)/common/m4/as-scrub-include.m4 \ ++ $(top_srcdir)/common/m4/as-version.m4 \ ++ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ ++ $(top_srcdir)/common/m4/gst-arch.m4 \ ++ $(top_srcdir)/common/m4/gst-args.m4 \ ++ $(top_srcdir)/common/m4/gst-check.m4 \ ++ $(top_srcdir)/common/m4/gst-default.m4 \ ++ $(top_srcdir)/common/m4/gst-dowhile.m4 \ ++ $(top_srcdir)/common/m4/gst-error.m4 \ ++ $(top_srcdir)/common/m4/gst-feature.m4 \ ++ $(top_srcdir)/common/m4/gst-gettext.m4 \ ++ $(top_srcdir)/common/m4/gst-glib2.m4 \ ++ $(top_srcdir)/common/m4/gst-platform.m4 \ ++ $(top_srcdir)/common/m4/gst-plugin-docs.m4 \ ++ $(top_srcdir)/common/m4/gst-plugindir.m4 \ ++ $(top_srcdir)/common/m4/gst-x11.m4 \ ++ $(top_srcdir)/common/m4/gst.m4 \ ++ $(top_srcdir)/common/m4/gtk-doc.m4 \ ++ $(top_srcdir)/common/m4/pkg.m4 \ ++ $(top_srcdir)/common/m4/shave.m4 $(top_srcdir)/m4/gettext.m4 \ ++ $(top_srcdir)/m4/gst-alsa.m4 $(top_srcdir)/m4/gst-fionread.m4 \ ++ $(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \ ++ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ ++ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ ++ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ ++ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ ++ $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(install_sh) -d ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; ++am__install_max = 40 ++am__nobase_strip_setup = \ ++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` ++am__nobase_strip = \ ++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" ++am__nobase_list = $(am__nobase_strip_setup); \ ++ for p in $$list; do echo "$$p $$p"; done | \ ++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ ++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ ++ if (++n[$$2] == $(am__install_max)) \ ++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ ++ END { for (dir in files) print dir, files[dir] }' ++am__base_list = \ ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++am__installdirs = "$(DESTDIR)$(plugindir)" ++LTLIBRARIES = $(plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++libgstrtpmux_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) ++am_libgstrtpmux_la_OBJECTS = libgstrtpmux_la-gstrtpmuxer.lo \ ++ libgstrtpmux_la-gstrtpmux.lo libgstrtpmux_la-gstrtpdtmfmux.lo ++libgstrtpmux_la_OBJECTS = $(am_libgstrtpmux_la_OBJECTS) ++libgstrtpmux_la_LINK = $(LIBTOOL) --tag=CC \ ++ $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ ++ $(CCLD) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) \ ++ $(libgstrtpmux_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(libgstrtpmux_la_SOURCES) ++DIST_SOURCES = $(libgstrtpmux_la_SOURCES) ++HEADERS = $(noinst_HEADERS) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ ++ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ++ACMENC_CFLAGS = @ACMENC_CFLAGS@ ++ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@ ++ALSA_CFLAGS = @ALSA_CFLAGS@ ++ALSA_LIBS = @ALSA_LIBS@ ++AMRWB_LIBS = @AMRWB_LIBS@ ++AMTAR = @AMTAR@ ++AM_MAKEFLAGS = @AM_MAKEFLAGS@ ++APEXSINK_CFLAGS = @APEXSINK_CFLAGS@ ++APEXSINK_LIBS = @APEXSINK_LIBS@ ++AR = @AR@ ++AS = @AS@ ++ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@ ++ASSRENDER_LIBS = @ASSRENDER_LIBS@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ ++AWK = @AWK@ ++BZ2_LIBS = @BZ2_LIBS@ ++CC = @CC@ ++CCASFLAGS = @CCASFLAGS@ ++CCDEPMODE = @CCDEPMODE@ ++CDAUDIO_CFLAGS = @CDAUDIO_CFLAGS@ ++CDAUDIO_CONFIG = @CDAUDIO_CONFIG@ ++CDAUDIO_LIBS = @CDAUDIO_LIBS@ ++CELT_0_5_CFLAGS = @CELT_0_5_CFLAGS@ ++CELT_0_5_LIBS = @CELT_0_5_LIBS@ ++CELT_0_7_CFLAGS = @CELT_0_7_CFLAGS@ ++CELT_0_7_LIBS = @CELT_0_7_LIBS@ ++CELT_CFLAGS = @CELT_CFLAGS@ ++CELT_LIBS = @CELT_LIBS@ ++CFLAGS = @CFLAGS@ ++COG_CFLAGS = @COG_CFLAGS@ ++COG_LIBS = @COG_LIBS@ ++CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ ++CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DCCP_LIBS = @DCCP_LIBS@ ++DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@ ++DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@ ++DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@ ++DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@ ++DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@ ++DEFS = @DEFS@ ++DEPDIR = @DEPDIR@ ++DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@ ++DIRAC_CFLAGS = @DIRAC_CFLAGS@ ++DIRAC_LIBS = @DIRAC_LIBS@ ++DIRECTDRAW_LIBS = @DIRECTDRAW_LIBS@ ++DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ ++DIRECTFB_LIBS = @DIRECTFB_LIBS@ ++DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@ ++DIRECTX_CFLAGS = @DIRECTX_CFLAGS@ ++DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@ ++DIVXDEC_LIBS = @DIVXDEC_LIBS@ ++DIVXENC_LIBS = @DIVXENC_LIBS@ ++DLLTOOL = @DLLTOOL@ ++DSYMUTIL = @DSYMUTIL@ ++DTS_LIBS = @DTS_LIBS@ ++DUMPBIN = @DUMPBIN@ ++DVDNAV_CFLAGS = @DVDNAV_CFLAGS@ ++DVDNAV_CONFIG = @DVDNAV_CONFIG@ ++DVDNAV_LIBS = @DVDNAV_LIBS@ ++ECHO_C = @ECHO_C@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ ++ERROR_CFLAGS = @ERROR_CFLAGS@ ++ERROR_CXXFLAGS = @ERROR_CXXFLAGS@ ++EXEEXT = @EXEEXT@ ++EXIF_CFLAGS = @EXIF_CFLAGS@ ++EXIF_LIBS = @EXIF_LIBS@ ++F77 = @F77@ ++FAAC_LIBS = @FAAC_LIBS@ ++FAAD_IS_NEAAC = @FAAD_IS_NEAAC@ ++FAAD_LIBS = @FAAD_LIBS@ ++FC = @FC@ ++FFLAGS = @FFLAGS@ ++FGREP = @FGREP@ ++FLITE_CFLAGS = @FLITE_CFLAGS@ ++FLITE_LIBS = @FLITE_LIBS@ ++GCOV = @GCOV@ ++GCOV_CFLAGS = @GCOV_CFLAGS@ ++GCOV_LIBS = @GCOV_LIBS@ ++GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ ++GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ ++GIO_CFLAGS = @GIO_CFLAGS@ ++GIO_LIBS = @GIO_LIBS@ ++GLIB_CFLAGS = @GLIB_CFLAGS@ ++GLIB_LIBS = @GLIB_LIBS@ ++GLIB_PREFIX = @GLIB_PREFIX@ ++GLIB_REQ = @GLIB_REQ@ ++GME_LIBS = @GME_LIBS@ ++GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@ ++GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@ ++GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GMYTH_CFLAGS = @GMYTH_CFLAGS@ ++GMYTH_LIBS = @GMYTH_LIBS@ ++GREP = @GREP@ ++GSM_LIBS = @GSM_LIBS@ ++GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@ ++GSTPB_PREFIX = @GSTPB_PREFIX@ ++GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@ ++GST_BASE_CFLAGS = @GST_BASE_CFLAGS@ ++GST_BASE_LIBS = @GST_BASE_LIBS@ ++GST_CFLAGS = @GST_CFLAGS@ ++GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@ ++GST_CHECK_LIBS = @GST_CHECK_LIBS@ ++GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@ ++GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@ ++GST_CXXFLAGS = @GST_CXXFLAGS@ ++GST_GDP_CFLAGS = @GST_GDP_CFLAGS@ ++GST_GDP_LIBS = @GST_GDP_LIBS@ ++GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@ ++GST_LIBS = @GST_LIBS@ ++GST_LICENSE = @GST_LICENSE@ ++GST_MAJORMINOR = @GST_MAJORMINOR@ ++GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@ ++GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@ ++GST_PACKAGE_NAME = @GST_PACKAGE_NAME@ ++GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@ ++GST_PLUGINS_ALL = @GST_PLUGINS_ALL@ ++GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@ ++GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@ ++GST_PLUGINS_DIR = @GST_PLUGINS_DIR@ ++GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@ ++GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@ ++GST_PREFIX = @GST_PREFIX@ ++GST_TOOLS_DIR = @GST_TOOLS_DIR@ ++GTKDOC_CHECK = @GTKDOC_CHECK@ ++GTK_CFLAGS = @GTK_CFLAGS@ ++GTK_LIBS = @GTK_LIBS@ ++HAVE_AMRWB = @HAVE_AMRWB@ ++HAVE_BZ2 = @HAVE_BZ2@ ++HAVE_CXX = @HAVE_CXX@ ++HAVE_DIRECTDRAW = @HAVE_DIRECTDRAW@ ++HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@ ++HAVE_DTS = @HAVE_DTS@ ++HAVE_FAAC = @HAVE_FAAC@ ++HAVE_FAAD = @HAVE_FAAD@ ++HAVE_FLITE = @HAVE_FLITE@ ++HAVE_GSM = @HAVE_GSM@ ++HAVE_JP2K = @HAVE_JP2K@ ++HAVE_NAS = @HAVE_NAS@ ++HAVE_X = @HAVE_X@ ++HAVE_X11 = @HAVE_X11@ ++HTML_DIR = @HTML_DIR@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++INTLLIBS = @INTLLIBS@ ++INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ ++IPTC_CFLAGS = @IPTC_CFLAGS@ ++IPTC_LIBS = @IPTC_LIBS@ ++JACK_CFLAGS = @JACK_CFLAGS@ ++JACK_LIBS = @JACK_LIBS@ ++JP2K_LIBS = @JP2K_LIBS@ ++KATE_CFLAGS = @KATE_CFLAGS@ ++KATE_LIBS = @KATE_LIBS@ ++LD = @LD@ ++LDFLAGS = @LDFLAGS@ ++LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@ ++LIBDC1394_LIBS = @LIBDC1394_LIBS@ ++LIBDIR = @LIBDIR@ ++LIBICONV = @LIBICONV@ ++LIBINTL = @LIBINTL@ ++LIBM = @LIBM@ ++LIBMMS_CFLAGS = @LIBMMS_CFLAGS@ ++LIBMMS_LIBS = @LIBMMS_LIBS@ ++LIBOBJS = @LIBOBJS@ ++LIBOIL_CFLAGS = @LIBOIL_CFLAGS@ ++LIBOIL_LIBS = @LIBOIL_LIBS@ ++LIBS = @LIBS@ ++LIBTOOL = @LIBTOOL@ ++LIPO = @LIPO@ ++LN_S = @LN_S@ ++LOCALEDIR = @LOCALEDIR@ ++LRDF_CFLAGS = @LRDF_CFLAGS@ ++LRDF_LIBS = @LRDF_LIBS@ ++LTLIBICONV = @LTLIBICONV@ ++LTLIBINTL = @LTLIBINTL@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAINT = @MAINT@ ++MAKEFLAGS = @MAKEFLAGS@ ++MAKEINFO = @MAKEINFO@ ++METADATA_CFLAGS = @METADATA_CFLAGS@ ++METADATA_LIBS = @METADATA_LIBS@ ++MIMIC_CFLAGS = @MIMIC_CFLAGS@ ++MIMIC_LIBS = @MIMIC_LIBS@ ++MJPEG_CFLAGS = @MJPEG_CFLAGS@ ++MJPEG_LIBS = @MJPEG_LIBS@ ++MKDIR_P = @MKDIR_P@ ++MODPLUG_CFLAGS = @MODPLUG_CFLAGS@ ++MODPLUG_LIBS = @MODPLUG_LIBS@ ++MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@ ++MPEG2ENC_LIBS = @MPEG2ENC_LIBS@ ++MPLEX_CFLAGS = @MPLEX_CFLAGS@ ++MPLEX_LIBS = @MPLEX_LIBS@ ++MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ ++MSGMERGE = @MSGMERGE@ ++MUSEPACK_LIBS = @MUSEPACK_LIBS@ ++MUSICBRAINZ_CFLAGS = @MUSICBRAINZ_CFLAGS@ ++MUSICBRAINZ_LIBS = @MUSICBRAINZ_LIBS@ ++NAS_CFLAGS = @NAS_CFLAGS@ ++NAS_LIBS = @NAS_LIBS@ ++NEON_CFLAGS = @NEON_CFLAGS@ ++NEON_LIBS = @NEON_LIBS@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ ++OBJC = @OBJC@ ++OBJCDEPMODE = @OBJCDEPMODE@ ++OBJC_LDFLAGS = @OBJC_LDFLAGS@ ++OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ ++OFA_CFLAGS = @OFA_CFLAGS@ ++OFA_LIBS = @OFA_LIBS@ ++ORCC = @ORCC@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ ++PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ ++PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ ++PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ ++PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@ ++PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ ++PKG_CONFIG = @PKG_CONFIG@ ++PLUGINDIR = @PLUGINDIR@ ++POSUB = @POSUB@ ++PROFILE_CFLAGS = @PROFILE_CFLAGS@ ++PYTHON = @PYTHON@ ++PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ ++PYTHON_PLATFORM = @PYTHON_PLATFORM@ ++PYTHON_PREFIX = @PYTHON_PREFIX@ ++PYTHON_VERSION = @PYTHON_VERSION@ ++Q = @Q@ ++RANLIB = @RANLIB@ ++RSVG_CFLAGS = @RSVG_CFLAGS@ ++RSVG_LIBS = @RSVG_LIBS@ ++SCHRO_CFLAGS = @SCHRO_CFLAGS@ ++SCHRO_LIBS = @SCHRO_LIBS@ ++SDL_CFLAGS = @SDL_CFLAGS@ ++SDL_CONFIG = @SDL_CONFIG@ ++SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ ++SLV2_CFLAGS = @SLV2_CFLAGS@ ++SLV2_LIBS = @SLV2_LIBS@ ++SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ ++SNDFILE_LIBS = @SNDFILE_LIBS@ ++SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@ ++SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@ ++SPC_LIBS = @SPC_LIBS@ ++STRIP = @STRIP@ ++SWFDEC_CFLAGS = @SWFDEC_CFLAGS@ ++SWFDEC_LIBS = @SWFDEC_LIBS@ ++THEORADEC_CFLAGS = @THEORADEC_CFLAGS@ ++THEORADEC_LIBS = @THEORADEC_LIBS@ ++TIGER_CFLAGS = @TIGER_CFLAGS@ ++TIGER_LIBS = @TIGER_LIBS@ ++TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@ ++TIMIDITY_LIBS = @TIMIDITY_LIBS@ ++USE_NLS = @USE_NLS@ ++V = @V@ ++VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ ++VALGRIND_LIBS = @VALGRIND_LIBS@ ++VALGRIND_PATH = @VALGRIND_PATH@ ++VDPAU_CFLAGS = @VDPAU_CFLAGS@ ++VDPAU_LIBS = @VDPAU_LIBS@ ++VERSION = @VERSION@ ++WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@ ++WILDMIDI_LIBS = @WILDMIDI_LIBS@ ++WIN32_LIBS = @WIN32_LIBS@ ++X11_CFLAGS = @X11_CFLAGS@ ++X11_LIBS = @X11_LIBS@ ++XDG_LIBS = @XDG_LIBS@ ++XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ++XMKMF = @XMKMF@ ++XMP_1_99_5_CFLAGS = @XMP_1_99_5_CFLAGS@ ++XMP_1_99_5_LIBS = @XMP_1_99_5_LIBS@ ++XMP_CFLAGS = @XMP_CFLAGS@ ++XMP_LIBS = @XMP_LIBS@ ++XVID_LIBS = @XVID_LIBS@ ++X_CFLAGS = @X_CFLAGS@ ++X_EXTRA_LIBS = @X_EXTRA_LIBS@ ++X_LIBS = @X_LIBS@ ++X_PRE_LIBS = @X_PRE_LIBS@ ++ZBAR_CFLAGS = @ZBAR_CFLAGS@ ++ZBAR_LIBS = @ZBAR_LIBS@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ++ac_ct_OBJC = @ac_ct_OBJC@ ++am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ ++am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ ++install_sh = @install_sh@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++pkgpyexecdir = @pkgpyexecdir@ ++pkgpythondir = @pkgpythondir@ ++plugindir = @plugindir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++pyexecdir = @pyexecdir@ ++pythondir = @pythondir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++shavedir = @shavedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_build_prefix = @top_build_prefix@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ ++plugin_LTLIBRARIES = libgstrtpmux.la ++libgstrtpmux_la_SOURCES = gstrtpmuxer.c gstrtpmux.c gstrtpdtmfmux.c ++libgstrtpmux_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \ ++ -DEXTERN_BUF -DRTP_SUPPORT ++ ++libgstrtpmux_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-@GST_MAJORMINOR@ \ ++ $(GST_BASE_LIBS) $(GST_LIBS) ++ ++libgstrtpmux_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) ++libgstrtpmux_la_LIBTOOLFLAGS = --tag=disable-static ++noinst_HEADERS = gstrtpmux.h gstrtpdtmfmux.h ++all: all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/rtpmux/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnu gst/rtpmux/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) ++ @$(NORMAL_INSTALL) ++ test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)" ++ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ ++ list2=; for p in $$list; do \ ++ if test -f $$p; then \ ++ list2="$$list2 $$p"; \ ++ else :; fi; \ ++ done; \ ++ test -z "$$list2" || { \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \ ++ } ++ ++uninstall-pluginLTLIBRARIES: ++ @$(NORMAL_UNINSTALL) ++ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ ++ for p in $$list; do \ ++ $(am__strip_dir) \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \ ++ done ++ ++clean-pluginLTLIBRARIES: ++ -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) ++ @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ ++ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ++ test "$$dir" != "$$p" || dir=.; \ ++ echo "rm -f \"$${dir}/so_locations\""; \ ++ rm -f "$${dir}/so_locations"; \ ++ done ++libgstrtpmux.la: $(libgstrtpmux_la_OBJECTS) $(libgstrtpmux_la_DEPENDENCIES) ++ $(libgstrtpmux_la_LINK) -rpath $(plugindir) $(libgstrtpmux_la_OBJECTS) $(libgstrtpmux_la_LIBADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmux_la-gstrtpdtmfmux.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmux_la-gstrtpmux.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmux_la-gstrtpmuxer.Plo@am__quote@ ++ ++.c.o: ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< ++ ++.c.obj: ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< ++ ++libgstrtpmux_la-gstrtpmuxer.lo: gstrtpmuxer.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -MT libgstrtpmux_la-gstrtpmuxer.lo -MD -MP -MF $(DEPDIR)/libgstrtpmux_la-gstrtpmuxer.Tpo -c -o libgstrtpmux_la-gstrtpmuxer.lo `test -f 'gstrtpmuxer.c' || echo '$(srcdir)/'`gstrtpmuxer.c ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstrtpmux_la-gstrtpmuxer.Tpo $(DEPDIR)/libgstrtpmux_la-gstrtpmuxer.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstrtpmuxer.c' object='libgstrtpmux_la-gstrtpmuxer.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmux_la-gstrtpmuxer.lo `test -f 'gstrtpmuxer.c' || echo '$(srcdir)/'`gstrtpmuxer.c ++ ++libgstrtpmux_la-gstrtpmux.lo: gstrtpmux.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -MT libgstrtpmux_la-gstrtpmux.lo -MD -MP -MF $(DEPDIR)/libgstrtpmux_la-gstrtpmux.Tpo -c -o libgstrtpmux_la-gstrtpmux.lo `test -f 'gstrtpmux.c' || echo '$(srcdir)/'`gstrtpmux.c ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstrtpmux_la-gstrtpmux.Tpo $(DEPDIR)/libgstrtpmux_la-gstrtpmux.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstrtpmux.c' object='libgstrtpmux_la-gstrtpmux.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmux_la-gstrtpmux.lo `test -f 'gstrtpmux.c' || echo '$(srcdir)/'`gstrtpmux.c ++ ++libgstrtpmux_la-gstrtpdtmfmux.lo: gstrtpdtmfmux.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -MT libgstrtpmux_la-gstrtpdtmfmux.lo -MD -MP -MF $(DEPDIR)/libgstrtpmux_la-gstrtpdtmfmux.Tpo -c -o libgstrtpmux_la-gstrtpdtmfmux.lo `test -f 'gstrtpdtmfmux.c' || echo '$(srcdir)/'`gstrtpdtmfmux.c ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstrtpmux_la-gstrtpdtmfmux.Tpo $(DEPDIR)/libgstrtpmux_la-gstrtpdtmfmux.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstrtpdtmfmux.c' object='libgstrtpmux_la-gstrtpdtmfmux.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstrtpmux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmux_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmux_la-gstrtpdtmfmux.lo `test -f 'gstrtpdtmfmux.c' || echo '$(srcdir)/'`gstrtpdtmfmux.c ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ mkid -fID $$unique ++tags: TAGS ++ ++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ set x; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++check-am: all-am ++check: check-am ++all-am: Makefile $(LTLIBRARIES) $(HEADERS) ++installdirs: ++ for dir in "$(DESTDIR)$(plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \ ++ mostlyclean-am ++ ++distclean: distclean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: install-pluginLTLIBRARIES ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libtool clean-pluginLTLIBRARIES ctags distclean \ ++ distclean-compile distclean-generic distclean-libtool \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-pluginLTLIBRARIES \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-compile \ ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags uninstall uninstall-am uninstall-pluginLTLIBRARIES ++ ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/valve/gstvalve.c gst-plugins-good0.10-0.10.23/farsight/valve/gstvalve.c +--- gst-plugins-good0.10-0.10.23.ori/farsight/valve/gstvalve.c 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/valve/gstvalve.c 2009-05-21 14:46:27.000000000 -0400 +@@ -0,0 +1,311 @@ ++/* ++ * Farsight Voice+Video library ++ * ++ * Copyright 2007 Collabora Ltd, ++ * Copyright 2007 Nokia Corporation ++ * @author: Olivier Crete ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ * ++ */ ++/** ++ * SECTION:element-valve ++ * ++ * The valve is a simple element that drops buffers when the #GstValve::drop ++ * property is set to %TRUE and lets then through otherwise. ++ * ++ * Any downstream error received while the #GstValve::drop property is %FALSE ++ * is ignored. So downstream element can be set to %GST_STATE_NULL and removed, ++ * without using pad blocking. ++ * ++ * Last reviewed on 2008-02-10 (0.10.11) ++ */ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include "gstvalve.h" ++ ++#include ++ ++GST_DEBUG_CATEGORY (valve_debug); ++#define GST_CAT_DEFAULT (valve_debug) ++ ++/* elementfactory information */ ++static const GstElementDetails gst_valve_details = ++GST_ELEMENT_DETAILS ("Valve element", ++ "Filter", ++ "This element drops all packets when drop is TRUE", ++ "Olivier Crete "); ++ ++ ++static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", ++ GST_PAD_SINK, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS_ANY); ++ ++static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", ++ GST_PAD_SRC, ++ GST_PAD_ALWAYS, ++ GST_STATIC_CAPS_ANY); ++ ++/* Valve signals and args */ ++enum ++{ ++ /* FILL ME */ ++ LAST_SIGNAL ++}; ++ ++enum ++{ ++ ARG_0, ++ ARG_DROP, ++}; ++ ++ ++ ++ ++static void gst_valve_set_property (GObject * object, ++ guint prop_id, const GValue * value, GParamSpec * pspec); ++static void gst_valve_get_property (GObject * object, ++ guint prop_id, GValue * value, GParamSpec * pspec); ++ ++static gboolean gst_valve_event (GstPad * pad, GstEvent * event); ++static GstFlowReturn gst_valve_buffer_alloc (GstPad * pad, guint64 offset, ++ guint size, GstCaps * caps, GstBuffer ** buf); ++static GstFlowReturn gst_valve_chain (GstPad * pad, GstBuffer * buffer); ++static GstCaps *gst_valve_getcaps (GstPad * pad); ++ ++static void ++_do_init (GType type) ++{ ++ GST_DEBUG_CATEGORY_INIT (valve_debug, "valve", 0, "Valve"); ++} ++ ++GST_BOILERPLATE_FULL (GstValve, gst_valve, GstElement, ++ GST_TYPE_ELEMENT, _do_init); ++ ++static void ++gst_valve_base_init (gpointer klass) ++{ ++ GstElementClass *element_class = GST_ELEMENT_CLASS (klass); ++ ++ gst_element_class_add_pad_template (element_class, ++ gst_static_pad_template_get (&srctemplate)); ++ gst_element_class_add_pad_template (element_class, ++ gst_static_pad_template_get (&sinktemplate)); ++ ++ gst_element_class_set_details (element_class, &gst_valve_details); ++} ++ ++static void ++gst_valve_class_init (GstValveClass * klass) ++{ ++ GObjectClass *gobject_class; ++ ++ gobject_class = (GObjectClass *) klass; ++ ++ gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_valve_set_property); ++ gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_valve_get_property); ++ ++ g_object_class_install_property (gobject_class, ARG_DROP, ++ g_param_spec_boolean ("drop", ++ "Drops all buffers if TRUE", ++ "If this property if TRUE, the element will drop all buffers, if its FALSE, it will let them through", ++ FALSE, G_PARAM_READWRITE)); ++ ++ parent_class = g_type_class_peek_parent (klass); ++} ++ ++static void ++gst_valve_init (GstValve * valve, GstValveClass * klass) ++{ ++ valve->drop = FALSE; ++ valve->discont = FALSE; ++ ++ valve->srcpad = gst_pad_new_from_static_template (&srctemplate, "src"); ++ gst_pad_set_getcaps_function (valve->srcpad, ++ GST_DEBUG_FUNCPTR (gst_valve_getcaps)); ++ gst_element_add_pad (GST_ELEMENT (valve), valve->srcpad); ++ ++ valve->sinkpad = gst_pad_new_from_static_template (&sinktemplate, "sink"); ++ gst_pad_set_chain_function (valve->sinkpad, ++ GST_DEBUG_FUNCPTR (gst_valve_chain)); ++ gst_pad_set_event_function (valve->sinkpad, ++ GST_DEBUG_FUNCPTR (gst_valve_event)); ++ gst_pad_set_bufferalloc_function (valve->sinkpad, ++ GST_DEBUG_FUNCPTR (gst_valve_buffer_alloc)); ++ gst_pad_set_getcaps_function (valve->sinkpad, ++ GST_DEBUG_FUNCPTR (gst_valve_getcaps)); ++ gst_element_add_pad (GST_ELEMENT (valve), valve->sinkpad); ++} ++ ++ ++static void ++gst_valve_set_property (GObject * object, ++ guint prop_id, const GValue * value, GParamSpec * pspec) ++{ ++ GstValve *valve = GST_VALVE (object); ++ ++ switch (prop_id) { ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ case ARG_DROP: ++ GST_OBJECT_LOCK (object); ++ valve->drop = g_value_get_boolean (value); ++ GST_OBJECT_UNLOCK (object); ++ break; ++ } ++} ++ ++static void ++gst_valve_get_property (GObject * object, ++ guint prop_id, GValue * value, GParamSpec * pspec) ++{ ++ GstValve *valve = GST_VALVE (object); ++ ++ switch (prop_id) { ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ case ARG_DROP: ++ GST_OBJECT_LOCK (object); ++ g_value_set_boolean (value, valve->drop); ++ GST_OBJECT_UNLOCK (object); ++ break; ++ } ++} ++ ++static GstFlowReturn ++gst_valve_chain (GstPad * pad, GstBuffer * buffer) ++{ ++ GstValve *valve = GST_VALVE (gst_pad_get_parent_element (pad)); ++ GstFlowReturn ret = GST_FLOW_OK; ++ gboolean drop; ++ ++ GST_OBJECT_LOCK (GST_OBJECT (valve)); ++ drop = valve->drop; ++ ++ if (!drop && valve->discont) { ++ buffer = gst_buffer_make_metadata_writable (buffer); ++ GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT); ++ valve->discont = FALSE; ++ } ++ GST_OBJECT_UNLOCK (GST_OBJECT (valve)); ++ ++ if (drop) ++ gst_buffer_unref (buffer); ++ else ++ ret = gst_pad_push (valve->srcpad, buffer); ++ ++ ++ GST_OBJECT_LOCK (GST_OBJECT (valve)); ++ if (valve->drop) ++ ret = GST_FLOW_OK; ++ GST_OBJECT_UNLOCK (GST_OBJECT (valve)); ++ ++ gst_object_unref (valve); ++ ++ return ret; ++} ++ ++ ++static gboolean ++gst_valve_event (GstPad * pad, GstEvent * event) ++{ ++ GstValve *valve = GST_VALVE (gst_pad_get_parent_element (pad)); ++ gboolean ret = TRUE; ++ gboolean drop; ++ ++ GST_OBJECT_LOCK (GST_OBJECT (valve)); ++ drop = valve->drop; ++ GST_OBJECT_UNLOCK (GST_OBJECT (valve)); ++ ++ if (drop) ++ gst_event_unref (event); ++ else ++ ret = gst_pad_push_event (valve->srcpad, event); ++ ++ GST_OBJECT_LOCK (GST_OBJECT (valve)); ++ if (valve->drop) ++ ret = TRUE; ++ GST_OBJECT_UNLOCK (GST_OBJECT (valve)); ++ ++ gst_object_unref (valve); ++ return ret; ++} ++ ++static GstFlowReturn ++gst_valve_buffer_alloc (GstPad * pad, guint64 offset, guint size, ++ GstCaps * caps, GstBuffer ** buf) ++{ ++ GstValve *valve = GST_VALVE (gst_pad_get_parent_element (pad)); ++ GstFlowReturn ret = GST_FLOW_OK; ++ gboolean drop; ++ ++ GST_OBJECT_LOCK (GST_OBJECT (valve)); ++ drop = valve->drop; ++ GST_OBJECT_UNLOCK (GST_OBJECT (valve)); ++ ++ if (drop) ++ *buf = NULL; ++ else ++ ret = gst_pad_alloc_buffer (valve->srcpad, offset, size, caps, buf); ++ ++ GST_OBJECT_LOCK (GST_OBJECT (valve)); ++ if (valve->drop) ++ ret = GST_FLOW_OK; ++ GST_OBJECT_UNLOCK (GST_OBJECT (valve)); ++ ++ gst_object_unref (valve); ++ ++ return ret; ++} ++ ++static GstCaps * ++gst_valve_getcaps (GstPad * pad) ++{ ++ GstValve *valve = GST_VALVE (gst_pad_get_parent (pad)); ++ GstCaps *caps; ++ ++ if (pad == valve->sinkpad) ++ caps = gst_pad_peer_get_caps (valve->srcpad); ++ else ++ caps = gst_pad_peer_get_caps (valve->sinkpad); ++ ++ if (caps == NULL) ++ caps = gst_caps_copy (gst_pad_get_pad_template_caps (pad)); ++ ++ gst_object_unref (valve); ++ ++ return caps; ++} ++ ++ ++static gboolean ++plugin_init (GstPlugin * plugin) ++{ ++ return gst_element_register (plugin, "valve", ++ GST_RANK_MARGINAL, GST_TYPE_VALVE); ++} ++ ++GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, ++ GST_VERSION_MINOR, ++ "valve", ++ "Valve", ++ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN) +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/valve/gstvalve.h gst-plugins-good0.10-0.10.23/farsight/valve/gstvalve.h +--- gst-plugins-good0.10-0.10.23.ori/farsight/valve/gstvalve.h 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/valve/gstvalve.h 2009-05-21 14:46:27.000000000 -0400 +@@ -0,0 +1,82 @@ ++/* ++ * Farsight Voice+Video library ++ * ++ * Copyright 2007 Collabora Ltd, ++ * Copyright 2007 Nokia Corporation ++ * @author: Olivier Crete ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ * ++ */ ++ ++#ifndef __GST_VALVE_H__ ++#define __GST_VALVE_H__ ++ ++#include ++ ++G_BEGIN_DECLS ++/* #define's don't like whitespacey bits */ ++#define GST_TYPE_VALVE \ ++ (gst_valve_get_type()) ++#define GST_VALVE(obj) \ ++ (G_TYPE_CHECK_INSTANCE_CAST((obj), \ ++ GST_TYPE_VALVE,GstValve)) ++#define GST_VALVE_CLASS(klass) \ ++ (G_TYPE_CHECK_CLASS_CAST((klass), \ ++ GST_TYPE_VALVE,GstValveClass)) ++#define GST_IS_VALVE(obj) \ ++ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VALVE)) ++#define GST_IS_VALVE_CLASS(obj) \ ++ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VALVE)) ++typedef struct _GstValve GstValve; ++typedef struct _GstValveClass GstValveClass; ++typedef struct _GstValvePrivate GstValvePrivate; ++ ++/** ++ * GstValve: ++ * ++ * The private valve structure ++ */ ++struct _GstValve ++{ ++ /*< private >*/ ++ GstElement parent; ++ ++ /* Protected by the object lock */ ++ gboolean drop; ++ ++ /* Protected by the stream lock */ ++ gboolean discont; ++ ++ GstPad *srcpad; ++ GstPad *sinkpad; ++ ++ /*< private > */ ++ gpointer _gst_reserved[GST_PADDING]; ++}; ++ ++struct _GstValveClass ++{ ++ GstElementClass parent_class; ++ ++ /*< private > */ ++ gpointer _gst_reserved[GST_PADDING]; ++}; ++ ++GType gst_valve_get_type (void); ++ ++G_END_DECLS ++#endif /* __GST_VALVE_H__ */ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/valve/Makefile.am gst-plugins-good0.10-0.10.23/farsight/valve/Makefile.am +--- gst-plugins-good0.10-0.10.23.ori/farsight/valve/Makefile.am 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/valve/Makefile.am 2009-11-22 14:11:13.000000000 -0500 +@@ -0,0 +1,9 @@ ++plugin_LTLIBRARIES = libgstvalve.la ++ ++libgstvalve_la_SOURCES = gstvalve.c gstvalve.h ++ ++libgstvalve_la_CFLAGS = $(GST_CFLAGS) ++libgstvalve_la_LIBADD = $(GST_LIBS) ++libgstvalve_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) ++libgstvalve_la_LIBTOOLFLAGS = --tag=disable-static ++ +diff -Naur gst-plugins-good0.10-0.10.23.ori/farsight/valve/Makefile.in gst-plugins-good0.10-0.10.23/farsight/valve/Makefile.in +--- gst-plugins-good0.10-0.10.23.ori/farsight/valve/Makefile.in 1969-12-31 19:00:00.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/farsight/valve/Makefile.in 2010-03-05 20:28:41.000000000 -0500 +@@ -0,0 +1,816 @@ ++# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# @configure_input@ ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, ++# Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++@SET_MAKE@ ++ ++VPATH = @srcdir@ ++pkgdatadir = $(datadir)/@PACKAGE@ ++pkgincludedir = $(includedir)/@PACKAGE@ ++pkglibdir = $(libdir)/@PACKAGE@ ++pkglibexecdir = $(libexecdir)/@PACKAGE@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = @build@ ++host_triplet = @host@ ++subdir = gst/valve ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ ++ $(top_srcdir)/common/m4/as-auto-alt.m4 \ ++ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ ++ $(top_srcdir)/common/m4/as-objc.m4 \ ++ $(top_srcdir)/common/m4/as-python.m4 \ ++ $(top_srcdir)/common/m4/as-scrub-include.m4 \ ++ $(top_srcdir)/common/m4/as-version.m4 \ ++ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ ++ $(top_srcdir)/common/m4/gst-arch.m4 \ ++ $(top_srcdir)/common/m4/gst-args.m4 \ ++ $(top_srcdir)/common/m4/gst-check.m4 \ ++ $(top_srcdir)/common/m4/gst-default.m4 \ ++ $(top_srcdir)/common/m4/gst-dowhile.m4 \ ++ $(top_srcdir)/common/m4/gst-error.m4 \ ++ $(top_srcdir)/common/m4/gst-feature.m4 \ ++ $(top_srcdir)/common/m4/gst-gettext.m4 \ ++ $(top_srcdir)/common/m4/gst-glib2.m4 \ ++ $(top_srcdir)/common/m4/gst-platform.m4 \ ++ $(top_srcdir)/common/m4/gst-plugin-docs.m4 \ ++ $(top_srcdir)/common/m4/gst-plugindir.m4 \ ++ $(top_srcdir)/common/m4/gst-x11.m4 \ ++ $(top_srcdir)/common/m4/gst.m4 \ ++ $(top_srcdir)/common/m4/gtk-doc.m4 \ ++ $(top_srcdir)/common/m4/pkg.m4 \ ++ $(top_srcdir)/common/m4/shave.m4 $(top_srcdir)/m4/gettext.m4 \ ++ $(top_srcdir)/m4/gst-alsa.m4 $(top_srcdir)/m4/gst-fionread.m4 \ ++ $(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \ ++ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ ++ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ ++ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ ++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ ++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ ++ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ ++ $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(install_sh) -d ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; ++am__install_max = 40 ++am__nobase_strip_setup = \ ++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` ++am__nobase_strip = \ ++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" ++am__nobase_list = $(am__nobase_strip_setup); \ ++ for p in $$list; do echo "$$p $$p"; done | \ ++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ ++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ ++ if (++n[$$2] == $(am__install_max)) \ ++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ ++ END { for (dir in files) print dir, files[dir] }' ++am__base_list = \ ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++am__installdirs = "$(DESTDIR)$(plugindir)" ++LTLIBRARIES = $(plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++libgstvalve_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_libgstvalve_la_OBJECTS = libgstvalve_la-gstvalve.lo ++libgstvalve_la_OBJECTS = $(am_libgstvalve_la_OBJECTS) ++libgstvalve_la_LINK = $(LIBTOOL) --tag=CC \ ++ $(libgstvalve_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ ++ $(CCLD) $(libgstvalve_la_CFLAGS) $(CFLAGS) \ ++ $(libgstvalve_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(libgstvalve_la_SOURCES) ++DIST_SOURCES = $(libgstvalve_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ ++ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ ++ACMENC_CFLAGS = @ACMENC_CFLAGS@ ++ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@ ++ALSA_CFLAGS = @ALSA_CFLAGS@ ++ALSA_LIBS = @ALSA_LIBS@ ++AMRWB_LIBS = @AMRWB_LIBS@ ++AMTAR = @AMTAR@ ++AM_MAKEFLAGS = @AM_MAKEFLAGS@ ++APEXSINK_CFLAGS = @APEXSINK_CFLAGS@ ++APEXSINK_LIBS = @APEXSINK_LIBS@ ++AR = @AR@ ++AS = @AS@ ++ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@ ++ASSRENDER_LIBS = @ASSRENDER_LIBS@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ ++AWK = @AWK@ ++BZ2_LIBS = @BZ2_LIBS@ ++CC = @CC@ ++CCASFLAGS = @CCASFLAGS@ ++CCDEPMODE = @CCDEPMODE@ ++CDAUDIO_CFLAGS = @CDAUDIO_CFLAGS@ ++CDAUDIO_CONFIG = @CDAUDIO_CONFIG@ ++CDAUDIO_LIBS = @CDAUDIO_LIBS@ ++CELT_0_5_CFLAGS = @CELT_0_5_CFLAGS@ ++CELT_0_5_LIBS = @CELT_0_5_LIBS@ ++CELT_0_7_CFLAGS = @CELT_0_7_CFLAGS@ ++CELT_0_7_LIBS = @CELT_0_7_LIBS@ ++CELT_CFLAGS = @CELT_CFLAGS@ ++CELT_LIBS = @CELT_LIBS@ ++CFLAGS = @CFLAGS@ ++COG_CFLAGS = @COG_CFLAGS@ ++COG_LIBS = @COG_LIBS@ ++CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ ++CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DCCP_LIBS = @DCCP_LIBS@ ++DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@ ++DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@ ++DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@ ++DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@ ++DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@ ++DEFS = @DEFS@ ++DEPDIR = @DEPDIR@ ++DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@ ++DIRAC_CFLAGS = @DIRAC_CFLAGS@ ++DIRAC_LIBS = @DIRAC_LIBS@ ++DIRECTDRAW_LIBS = @DIRECTDRAW_LIBS@ ++DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ ++DIRECTFB_LIBS = @DIRECTFB_LIBS@ ++DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@ ++DIRECTX_CFLAGS = @DIRECTX_CFLAGS@ ++DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@ ++DIVXDEC_LIBS = @DIVXDEC_LIBS@ ++DIVXENC_LIBS = @DIVXENC_LIBS@ ++DLLTOOL = @DLLTOOL@ ++DSYMUTIL = @DSYMUTIL@ ++DTS_LIBS = @DTS_LIBS@ ++DUMPBIN = @DUMPBIN@ ++DVDNAV_CFLAGS = @DVDNAV_CFLAGS@ ++DVDNAV_CONFIG = @DVDNAV_CONFIG@ ++DVDNAV_LIBS = @DVDNAV_LIBS@ ++ECHO_C = @ECHO_C@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ ++ERROR_CFLAGS = @ERROR_CFLAGS@ ++ERROR_CXXFLAGS = @ERROR_CXXFLAGS@ ++EXEEXT = @EXEEXT@ ++EXIF_CFLAGS = @EXIF_CFLAGS@ ++EXIF_LIBS = @EXIF_LIBS@ ++F77 = @F77@ ++FAAC_LIBS = @FAAC_LIBS@ ++FAAD_IS_NEAAC = @FAAD_IS_NEAAC@ ++FAAD_LIBS = @FAAD_LIBS@ ++FC = @FC@ ++FFLAGS = @FFLAGS@ ++FGREP = @FGREP@ ++FLITE_CFLAGS = @FLITE_CFLAGS@ ++FLITE_LIBS = @FLITE_LIBS@ ++GCOV = @GCOV@ ++GCOV_CFLAGS = @GCOV_CFLAGS@ ++GCOV_LIBS = @GCOV_LIBS@ ++GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ ++GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ ++GIO_CFLAGS = @GIO_CFLAGS@ ++GIO_LIBS = @GIO_LIBS@ ++GLIB_CFLAGS = @GLIB_CFLAGS@ ++GLIB_LIBS = @GLIB_LIBS@ ++GLIB_PREFIX = @GLIB_PREFIX@ ++GLIB_REQ = @GLIB_REQ@ ++GME_LIBS = @GME_LIBS@ ++GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@ ++GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@ ++GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GMYTH_CFLAGS = @GMYTH_CFLAGS@ ++GMYTH_LIBS = @GMYTH_LIBS@ ++GREP = @GREP@ ++GSM_LIBS = @GSM_LIBS@ ++GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@ ++GSTPB_PREFIX = @GSTPB_PREFIX@ ++GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@ ++GST_BASE_CFLAGS = @GST_BASE_CFLAGS@ ++GST_BASE_LIBS = @GST_BASE_LIBS@ ++GST_CFLAGS = @GST_CFLAGS@ ++GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@ ++GST_CHECK_LIBS = @GST_CHECK_LIBS@ ++GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@ ++GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@ ++GST_CXXFLAGS = @GST_CXXFLAGS@ ++GST_GDP_CFLAGS = @GST_GDP_CFLAGS@ ++GST_GDP_LIBS = @GST_GDP_LIBS@ ++GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@ ++GST_LIBS = @GST_LIBS@ ++GST_LICENSE = @GST_LICENSE@ ++GST_MAJORMINOR = @GST_MAJORMINOR@ ++GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@ ++GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@ ++GST_PACKAGE_NAME = @GST_PACKAGE_NAME@ ++GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@ ++GST_PLUGINS_ALL = @GST_PLUGINS_ALL@ ++GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@ ++GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@ ++GST_PLUGINS_DIR = @GST_PLUGINS_DIR@ ++GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@ ++GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@ ++GST_PREFIX = @GST_PREFIX@ ++GST_TOOLS_DIR = @GST_TOOLS_DIR@ ++GTKDOC_CHECK = @GTKDOC_CHECK@ ++GTK_CFLAGS = @GTK_CFLAGS@ ++GTK_LIBS = @GTK_LIBS@ ++HAVE_AMRWB = @HAVE_AMRWB@ ++HAVE_BZ2 = @HAVE_BZ2@ ++HAVE_CXX = @HAVE_CXX@ ++HAVE_DIRECTDRAW = @HAVE_DIRECTDRAW@ ++HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@ ++HAVE_DTS = @HAVE_DTS@ ++HAVE_FAAC = @HAVE_FAAC@ ++HAVE_FAAD = @HAVE_FAAD@ ++HAVE_FLITE = @HAVE_FLITE@ ++HAVE_GSM = @HAVE_GSM@ ++HAVE_JP2K = @HAVE_JP2K@ ++HAVE_NAS = @HAVE_NAS@ ++HAVE_X = @HAVE_X@ ++HAVE_X11 = @HAVE_X11@ ++HTML_DIR = @HTML_DIR@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++INTLLIBS = @INTLLIBS@ ++INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ ++IPTC_CFLAGS = @IPTC_CFLAGS@ ++IPTC_LIBS = @IPTC_LIBS@ ++JACK_CFLAGS = @JACK_CFLAGS@ ++JACK_LIBS = @JACK_LIBS@ ++JP2K_LIBS = @JP2K_LIBS@ ++KATE_CFLAGS = @KATE_CFLAGS@ ++KATE_LIBS = @KATE_LIBS@ ++LD = @LD@ ++LDFLAGS = @LDFLAGS@ ++LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@ ++LIBDC1394_LIBS = @LIBDC1394_LIBS@ ++LIBDIR = @LIBDIR@ ++LIBICONV = @LIBICONV@ ++LIBINTL = @LIBINTL@ ++LIBM = @LIBM@ ++LIBMMS_CFLAGS = @LIBMMS_CFLAGS@ ++LIBMMS_LIBS = @LIBMMS_LIBS@ ++LIBOBJS = @LIBOBJS@ ++LIBOIL_CFLAGS = @LIBOIL_CFLAGS@ ++LIBOIL_LIBS = @LIBOIL_LIBS@ ++LIBS = @LIBS@ ++LIBTOOL = @LIBTOOL@ ++LIPO = @LIPO@ ++LN_S = @LN_S@ ++LOCALEDIR = @LOCALEDIR@ ++LRDF_CFLAGS = @LRDF_CFLAGS@ ++LRDF_LIBS = @LRDF_LIBS@ ++LTLIBICONV = @LTLIBICONV@ ++LTLIBINTL = @LTLIBINTL@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAINT = @MAINT@ ++MAKEFLAGS = @MAKEFLAGS@ ++MAKEINFO = @MAKEINFO@ ++METADATA_CFLAGS = @METADATA_CFLAGS@ ++METADATA_LIBS = @METADATA_LIBS@ ++MIMIC_CFLAGS = @MIMIC_CFLAGS@ ++MIMIC_LIBS = @MIMIC_LIBS@ ++MJPEG_CFLAGS = @MJPEG_CFLAGS@ ++MJPEG_LIBS = @MJPEG_LIBS@ ++MKDIR_P = @MKDIR_P@ ++MODPLUG_CFLAGS = @MODPLUG_CFLAGS@ ++MODPLUG_LIBS = @MODPLUG_LIBS@ ++MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@ ++MPEG2ENC_LIBS = @MPEG2ENC_LIBS@ ++MPLEX_CFLAGS = @MPLEX_CFLAGS@ ++MPLEX_LIBS = @MPLEX_LIBS@ ++MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ ++MSGMERGE = @MSGMERGE@ ++MUSEPACK_LIBS = @MUSEPACK_LIBS@ ++MUSICBRAINZ_CFLAGS = @MUSICBRAINZ_CFLAGS@ ++MUSICBRAINZ_LIBS = @MUSICBRAINZ_LIBS@ ++NAS_CFLAGS = @NAS_CFLAGS@ ++NAS_LIBS = @NAS_LIBS@ ++NEON_CFLAGS = @NEON_CFLAGS@ ++NEON_LIBS = @NEON_LIBS@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ ++OBJC = @OBJC@ ++OBJCDEPMODE = @OBJCDEPMODE@ ++OBJC_LDFLAGS = @OBJC_LDFLAGS@ ++OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ ++OFA_CFLAGS = @OFA_CFLAGS@ ++OFA_LIBS = @OFA_LIBS@ ++ORCC = @ORCC@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ ++PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ ++PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ ++PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ ++PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@ ++PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ ++PKG_CONFIG = @PKG_CONFIG@ ++PLUGINDIR = @PLUGINDIR@ ++POSUB = @POSUB@ ++PROFILE_CFLAGS = @PROFILE_CFLAGS@ ++PYTHON = @PYTHON@ ++PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ ++PYTHON_PLATFORM = @PYTHON_PLATFORM@ ++PYTHON_PREFIX = @PYTHON_PREFIX@ ++PYTHON_VERSION = @PYTHON_VERSION@ ++Q = @Q@ ++RANLIB = @RANLIB@ ++RSVG_CFLAGS = @RSVG_CFLAGS@ ++RSVG_LIBS = @RSVG_LIBS@ ++SCHRO_CFLAGS = @SCHRO_CFLAGS@ ++SCHRO_LIBS = @SCHRO_LIBS@ ++SDL_CFLAGS = @SDL_CFLAGS@ ++SDL_CONFIG = @SDL_CONFIG@ ++SDL_LIBS = @SDL_LIBS@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ ++SLV2_CFLAGS = @SLV2_CFLAGS@ ++SLV2_LIBS = @SLV2_LIBS@ ++SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ ++SNDFILE_LIBS = @SNDFILE_LIBS@ ++SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@ ++SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@ ++SPC_LIBS = @SPC_LIBS@ ++STRIP = @STRIP@ ++SWFDEC_CFLAGS = @SWFDEC_CFLAGS@ ++SWFDEC_LIBS = @SWFDEC_LIBS@ ++THEORADEC_CFLAGS = @THEORADEC_CFLAGS@ ++THEORADEC_LIBS = @THEORADEC_LIBS@ ++TIGER_CFLAGS = @TIGER_CFLAGS@ ++TIGER_LIBS = @TIGER_LIBS@ ++TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@ ++TIMIDITY_LIBS = @TIMIDITY_LIBS@ ++USE_NLS = @USE_NLS@ ++V = @V@ ++VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ ++VALGRIND_LIBS = @VALGRIND_LIBS@ ++VALGRIND_PATH = @VALGRIND_PATH@ ++VDPAU_CFLAGS = @VDPAU_CFLAGS@ ++VDPAU_LIBS = @VDPAU_LIBS@ ++VERSION = @VERSION@ ++WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@ ++WILDMIDI_LIBS = @WILDMIDI_LIBS@ ++WIN32_LIBS = @WIN32_LIBS@ ++X11_CFLAGS = @X11_CFLAGS@ ++X11_LIBS = @X11_LIBS@ ++XDG_LIBS = @XDG_LIBS@ ++XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ++XMKMF = @XMKMF@ ++XMP_1_99_5_CFLAGS = @XMP_1_99_5_CFLAGS@ ++XMP_1_99_5_LIBS = @XMP_1_99_5_LIBS@ ++XMP_CFLAGS = @XMP_CFLAGS@ ++XMP_LIBS = @XMP_LIBS@ ++XVID_LIBS = @XVID_LIBS@ ++X_CFLAGS = @X_CFLAGS@ ++X_EXTRA_LIBS = @X_EXTRA_LIBS@ ++X_LIBS = @X_LIBS@ ++X_PRE_LIBS = @X_PRE_LIBS@ ++ZBAR_CFLAGS = @ZBAR_CFLAGS@ ++ZBAR_LIBS = @ZBAR_LIBS@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ++ac_ct_OBJC = @ac_ct_OBJC@ ++am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ ++am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ ++install_sh = @install_sh@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++lt_ECHO = @lt_ECHO@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++pkgpyexecdir = @pkgpyexecdir@ ++pkgpythondir = @pkgpythondir@ ++plugindir = @plugindir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++pyexecdir = @pyexecdir@ ++pythondir = @pythondir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++shavedir = @shavedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_build_prefix = @top_build_prefix@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ ++plugin_LTLIBRARIES = libgstvalve.la ++libgstvalve_la_SOURCES = gstvalve.c gstvalve.h ++libgstvalve_la_CFLAGS = $(GST_CFLAGS) ++libgstvalve_la_LIBADD = $(GST_LIBS) ++libgstvalve_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) ++libgstvalve_la_LIBTOOLFLAGS = --tag=disable-static ++all: all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/valve/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --gnu gst/valve/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) ++ @$(NORMAL_INSTALL) ++ test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)" ++ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ ++ list2=; for p in $$list; do \ ++ if test -f $$p; then \ ++ list2="$$list2 $$p"; \ ++ else :; fi; \ ++ done; \ ++ test -z "$$list2" || { \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \ ++ } ++ ++uninstall-pluginLTLIBRARIES: ++ @$(NORMAL_UNINSTALL) ++ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ ++ for p in $$list; do \ ++ $(am__strip_dir) \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \ ++ done ++ ++clean-pluginLTLIBRARIES: ++ -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) ++ @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ ++ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ++ test "$$dir" != "$$p" || dir=.; \ ++ echo "rm -f \"$${dir}/so_locations\""; \ ++ rm -f "$${dir}/so_locations"; \ ++ done ++libgstvalve.la: $(libgstvalve_la_OBJECTS) $(libgstvalve_la_DEPENDENCIES) ++ $(libgstvalve_la_LINK) -rpath $(plugindir) $(libgstvalve_la_OBJECTS) $(libgstvalve_la_LIBADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvalve_la-gstvalve.Plo@am__quote@ ++ ++.c.o: ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< ++ ++.c.obj: ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< ++ ++libgstvalve_la-gstvalve.lo: gstvalve.c ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgstvalve_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvalve_la_CFLAGS) $(CFLAGS) -MT libgstvalve_la-gstvalve.lo -MD -MP -MF $(DEPDIR)/libgstvalve_la-gstvalve.Tpo -c -o libgstvalve_la-gstvalve.lo `test -f 'gstvalve.c' || echo '$(srcdir)/'`gstvalve.c ++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgstvalve_la-gstvalve.Tpo $(DEPDIR)/libgstvalve_la-gstvalve.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gstvalve.c' object='libgstvalve_la-gstvalve.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgstvalve_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvalve_la_CFLAGS) $(CFLAGS) -c -o libgstvalve_la-gstvalve.lo `test -f 'gstvalve.c' || echo '$(srcdir)/'`gstvalve.c ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ mkid -fID $$unique ++tags: TAGS ++ ++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ set x; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++distdir: $(DISTFILES) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d "$(distdir)/$$file"; then \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ ++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ ++ fi; \ ++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ ++ else \ ++ test -f "$(distdir)/$$file" \ ++ || cp -p $$d/$$file "$(distdir)/$$file" \ ++ || exit 1; \ ++ fi; \ ++ done ++check-am: all-am ++check: check-am ++all-am: Makefile $(LTLIBRARIES) ++installdirs: ++ for dir in "$(DESTDIR)$(plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ `test -z '$(STRIP)' || \ ++ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \ ++ mostlyclean-am ++ ++distclean: distclean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: install-pluginLTLIBRARIES ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libtool clean-pluginLTLIBRARIES ctags distclean \ ++ distclean-compile distclean-generic distclean-libtool \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-pluginLTLIBRARIES \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-compile \ ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags uninstall uninstall-am uninstall-pluginLTLIBRARIES ++ ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -Naur gst-plugins-good0.10-0.10.23.ori/Makefile.am gst-plugins-good0.10-0.10.23/Makefile.am +--- gst-plugins-good0.10-0.10.23.ori/Makefile.am 2010-02-14 16:58:34.000000000 -0500 ++++ gst-plugins-good0.10-0.10.23/Makefile.am 2010-03-29 19:35:21.000000000 -0400 +@@ -8,6 +8,7 @@ + + ALWAYS_SUBDIRS = \ + gst sys ext \ ++ farsight \ + tests \ + docs \ + po \